Здравствуйте, 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>>