Здравствуйте, deamon_tt, Вы писали:
_>Подскажите почему это может происходить? И вообще когда делфи уничтожает екземпляры класса? После выхода из функции? И что происходит в строке запуска функции, происходит копирование
Нет
_>или DncList просто получает адресс уже созданного екземпляра класса
Да
_> и где про ето почитать... Заранее спасибо за ответы...
F1, любая толковая книга по Delphi
_>Сама функция:
_>Function GetFileList(dir:string='';mask:string='*.*';attr:integer=faAnyFile):TStringList;
_>var res:cardinal;s:tsearchrec;
_>begin
_> result:=TStringList.Create;//Здесь утечка. Кто будет за собой убирать?
_> if dir='' then dir:=GetCurrentDir;
_> res:=FindFirst(dir+'/'+mask,attr,s);
_> while res=0 do begin
_> result.Append(s.Name);
_> res:=FindNext(s);
_> end;
_>end;
Если уж так хочется по таймеру то сделай хотя-бы так:
procedure GetFileList(SList: TStringList; dir:string='';mask:string='*.*';attr:integer=faAnyFile);
var res:cardinal;s:tsearchrec;
begin
SList.Clear;
if dir='' then dir:=GetCurrentDir;
res:=FindFirst(dir+'/'+mask,attr,s);
while res=0 do begin
SList.Append(s.Name);
res:=FindNext(s);
end;
end;
//Использование
procedure TFormShablon.TimerTestFolderTimer(Sender: TObject);
var DncList:TStringList;
begin
//Или создавай свой список в OnCreate формы и уничтожай в OnDestroy
DncList:= TStringList.Create;
try
GetFileList(DncList, 'c:\123', '*.*');
//Что-то делаем со списком
finally
DncList.Free;
end
end;
А вообще то для такого рода задач есть функции WinAPI FindFirstChangeNotification/FindNextChangeNotification.
Пример использования можно посмотреть в RXLib (модуль RxNotify).
... << RSDN@Home 1.1.4 beta 7 rev. 455>>