Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Проблема с модулями

Автор: Informlgg 3.12.2006 6:30

Есть модуль Book


unit Book;

interface
Type str = string[20];
Type Telement=record
Fam : str ;
Kniga :str ;
Shifr : str;
God :integer;
Kolvo : integer;
end;
Type
Mas = array of Telement ;

Type
TBook= class
PV, T : Mas ;
m,n: integer;

Constructor Create(a : integer);
Destructor Destroy;
Procedure Poisk(familia : str);
Procedure Insert(var k: integer; zapis : Telement);

Procedure Sort(var pp:mas);
end;

implementation

constructor TBook.Create (a:integer);
begin
n:=0;
m:=a;
end;
destructor TBook.Destroy;
begin
{}
end;
Procedure TBook.Sort(var pp:mas);
var i,j,k:integer;
x:Telement;
begin
for i:= 1 to m-1 do
begin
k:=i;
x:=pp[i];
for j:= i+1 to m do
if pp[j].fam < x.fam then
begin
k:= j ;
x:=pp[j];
end;
pp[k]:=pp[i];
pp[i]:=x;
end;
end;
procedure TBook.Poisk(familia: str);
var i,k:integer;
begin
k:=0;
for i := 1 to m do
if Pv[i].Fam=familia then
begin
k:=k+1;
setlength(T,k);
T[k]:=Pv[i];
end;
n:= k; // Êîëè÷åñòâî íàéäåííûõ êíèã îäíîãî àâòîðà
end;
procedure TBook.Insert(var k:integer;zapis : Telement);
begin
{}
end;

end.



так же основной модуль , кусок вырежу тока



procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Àâòîð';
StringGrid1.Cells[1,0]:='Êíèãà';
StringGrid1.Cells[2,0]:='Øèôð';
StringGrid1.Cells[3,0]:='Ãîä';
StringGrid1.Cells[4,0]:='Êîëè÷åñòâî';
AboutBox:=TAboutBox.Create(Application);
AboutBox.ShowModal;
Te.Create(1);
end;



почему когда заходит в Create вылетает в модуле Book Access Violation когда n:=0;

Автор: volvo 3.12.2006 12:58

Потому, что ты инициализируешь класс, а не объект...

Te := TBook.Create(1);