Das hier müsste auch unter Delphi 7 funktionieren:
Delphi-Quellcode:
procedure GetFileListEx(const Directory: string; const Files: TStrings; const FileMask: string; const SubFolders: Boolean);
var SearchRec: TSearchRec;
begin
Application.ProcessMessages;
if FindFirst(IncludeTrailingPathDelimiter(Directory)+FileMask, faAnyFile and not faDirectory and not faVolumeID and not faHidden, SearchRec) = 0 then
try repeat Files.Add(IncludeTrailingPathDelimiter(directory)+SearchRec.Name);
until FindNext(SearchRec) <> 0;
finally SysUtils.FindClose(SearchRec); end;
if SubFolders then
if FindFirst(IncludeTrailingPathDelimiter(Directory)+'*.*', faAnyFile, SearchRec) = 0 then
try repeat
if (SearchRec.Attr and faDirectory) <> 0 then
if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..'))
then GetFileListEx(IncludeTrailingPathDelimiter(Directory)+SearchRec.Name, Files, FileMask, SubFolders);
until FindNext(SearchRec) <> 0;
finally SysUtils.FindClose(SearchRec); end;
end;
Könnte funktionieren, auch wenn ich das etwas anders formatieren würde, aber das ist mehrheitlich Geschmackssache.
Was ich aber lieber weglassen würde ist das Application.ProgressMessages. Damit kann man auch Chaos anrichten,
z. B. wenn die Routine aus einem Eventhandler heraus aufgerufen wird und der nicht reetrant ist...