Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, DarkMaster, Вы писали:
DM>>Здравствуйте, Аноним, Вы писали:
А>>>Сухой остаток печальный: Это что? Каждый динамический список в программе чистить
А>>>отдельным кодом?????
DM>>Либо делай приведения типов (Dispose(TMyRecord(List.Items[i])) либо переходи на обьекты. Второе — легче.
А>Cпасибо, не говоря о том, что транслятор на Dispose(TMyRecord(List.Items[i])) выдаёт 'invalid typecast',
А>сам механизм передачи типа записи в процедуру внушает некий трепет ...
Какого типа? Это у меня очепятка (к классам привычка сказалась) — тут не тип передавать, а типизированный указатель.
type
PMyRecord=^TMyRecord;
TMyRecord=packed record
A,B,C:integer;
AName:string;
end;
var FList:TList;
procedure CreateList;
var i:integer;
P:PMyRecord;
begin
FList:=TList.Create;
for i:=0 to 100 do
begin
New(P);
P^.A:=i;
P^.B:=i+1;
P^.C:=i+2;
P^.AName:='Name'+IntToStr(i);
FList.Add(P);
end;
end;
procedure DisposeList;
var i:integer;
begin
for i:=0 to Pred(FList.Count) do
Dispose(PMyRecord(FList.Items[i]));
FList.Free;
end;