Re[2]: Утечка памяти в delphi
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.05.05 04:57
Оценка:
Здравствуйте, SeLarin, Вы писали:

SL>Каждый раз при вызове функции Вы создаете экземпляр класса TStringList, но он остается неосвобожденным до конца работы программы. Отсюда и появляется утечка. Более корректно на мой взгляд было бы передавать в функцию уже созданный экземпляр этого класса. Т.е. переписать код так:


Я бы даже упростил жизнь пользователям:
Function GetFileList(Dir : string=''; Mask : string = '*.*'; Attr : integer = faAnyFile; List: TStrings): Cardinal;
var 
  res: Cardinal;
    s: TSearchRec;
begin
  if not Assigned(List) then
  begin
    Result:=0;
    Exit;
  end;
  Result:= $FFFFFFFF; 
  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;
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.