Re[4]: Как избавиться от утечки памяти через 'string' в D5?
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 03.09.09 14:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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;
WBR, Dmitry Beloshistov AKA [-=BDS=-]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.