Re: Утечка памяти в delphi
От: SeLarin Россия http://selarin.livejournal.com
Дата: 21.05.05 19:24
Оценка:
Каждый раз при вызове функции Вы создаете экземпляр класса TStringList, но он остается неосвобожденным до конца работы программы. Отсюда и появляется утечка. Более корректно на мой взгляд было бы передавать в функцию уже созданный экземпляр этого класса. Т.е. переписать код так:


procedure TFormShablon.TimerTestFolderTimer(Sender: TObject);
var DncList:TStringList;

begin
DcnList:=TStringList.Create;
GetFileList('c:\123','*.*',DcnList);
.
.
.
DcnList.Free;
end;



Function GetFileList(dir:string='';mask:string='*.*';attr:integer=faAnyFile; List: TstringList): Cardinal;
var res:cardinal;s:tsearchrec;
begin
result:=-1;
if not Assigned(List) then
begin
  result:=0;
  Exit;
end;
if dir='' then dir:=GetCurrentDir;
res:=FindFirst(dir+'/'+mask,attr,s);
while res=0 do begin
List.Append(s.Name);
res:=FindNext(s);
end;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.