Bei mir funktioniert dieser Code schon seit vielen Jahren in zahlreichen Anwendungen absolut zuverlässig:
Delphi-Quellcode:
procedure GetFilesInDirectory(ADirectory: string; AMask: String; AList, DatList, GrossList: TStrings; ARekursiv: Boolean);
var
SR : TSearchRec;
Datum : TDateTime;
begin
ADirectory := BackShlashAmEnde(ADirectory);
if (SysUtils.FindFirst(ADirectory + AMask,faAnyFile and not faDirectory,SR) = 0) then
begin
repeat
if (SR.Name<>'.') AND (SR.Name<>'..') AND (SR.Attr<>faDirectory) then
begin
AList.Add(ADirectory+SR.Name);
Datum := FileDateToDateTime(Sr.Time);
DatList.Add(DateToStr(Datum));
GrossList.Add(IntToStr(Sr.size));
end;
until SysUtils.FindNext(SR)<>0;
SysUtils.FindClose(SR);
end;
if ARekursiv then
if (SysUtils.FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then
begin
repeat
if (SR.Name<>'.') AND (SR.Name<>'..') then
GetFilesInDirectory(ADirectory+SR.Name,AMask,AList,DatList,GrossList,True);
until FindNext(SR)<>0;
SysUtils.FindClose(SR);
end;
end;
In
ADirectory wird das zu durchsuchende Verzeichnis angegeben.
AMask enthält die Suchmaske.
AList liefert die Dateiliste zurück.
DatList liefert die zugehörigen Datei-Datumwerte zurück.
GrossList liefert die zugehörigen Datei-Größen zurück.
ARekursiv gibt an, ob Unterverzeichnisse durchsucht werden sollen.