Текущий архив: 2003.04.10;
Скачать: CL | DM;
Вниз
Работа с классами Найти похожие ветки
← →
DenisX (2003-03-30 15:30) [0]Всем привет! Подскажите в чем проблема? При использовании метода
Create возникает ошибка. Заранее благодарю.
unit VObj;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, Grids;
type
str22=string[22];
TElement=record
Fam:str22;
Kniga:str22;
Shifr:str22;
God:integer;
Kolvo:integer;
end;
Mas=array of TElement;
TAvtor=class
pV:^Mas;//
schet, schet2:integer;
constructor Create(a:integer);
destructor Destroy;
end;
FT=file of TElement;
implementation
uses Vec, Poi, Dob;
constructor TAvtor.Create(a:integer);
begin
GetMem(pV,a); //Здесь возникает ошибка
schet2:=a;
schet:=a;
end;
destructor TAvtor.Destroy;
begin
FreeMem(pV);
pV:=nil;
end;
end.
← →
Palladin © (2003-03-30 16:34) [1]когда ты говоришь array of TYPE, то переменная этого типа уже является указателем,
что получается в твоем случае...
pV является указателем на указатель... тоесть на область памяти в 4 байта, ты же под него выделяешь [a] байт...
конечно будет ошибка...
unit VObj;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, Grids;
type
str22=string[22];
TElement=record
Fam:str22;
Kniga:str22;
Shifr:str22;
God:integer;
Kolvo:integer;
end;
Mas=array of TElement;
TAvtor=class
pV:Mas;//
schet, schet2:integer;
constructor Create(a:integer);
destructor Destroy;
end;
FT=file of TElement;
implementation
uses Vec, Poi, Dob;
constructor TAvtor.Create(a:integer);
begin
SetLength(pV,a); //Здесь больше не будет возникать ошибки
schet2:=a;
schet:=a;
end;
destructor TAvtor.Destroy;
begin
pV:=nil;
end;
end.
Страницы: 1 вся ветка
Текущий архив: 2003.04.10;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.019 c