Huhu Listers,
ich hab gerade die wirklich gute Prozedur in der CodeLib gefunden, mir ist auch der Aufbau und so klar, aber ich fühl mich im Moment 'n bißchen wie ein echter Newbee.
1. kennt mein Delphi 5 kein IncludeTrailingPathDelimiter, sondern bestenfalls ein IncludeTrailingBackslash, aber schlimmer ist
2. das es behauptet bei
FindClose (sr);
seien Cardinal und TSearchRec inkompatible typen. Seh ich auch ein,
, aber laut hilfe gibt's FindClose zweimal, einmal mit
Handle und einmeal mit SearchRec? Warum zum teufel weigert sich mein Compiler das zu fressen?
SysUtils ist drin?
Hiiiiiiilfe!!!!
Viele herzliche Grüße
Marco
... der ganze Code hängt hier drunter...
Delphi-Quellcode:
procedure FindAllFiles(
var FileList: TStrings;
RootFolder: string;
Mask: string = '*.*';
Recurse: Boolean = True);
var
SR: TSearchRec;
begin
RootFolder := IncludeTrailingBackslash(RootFolder);
if Recurse then
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = faDirectory then
// --> ein Verzeichnis wurde gefunden
//* *der Verzeichnisname steht in SR.Name
//* *der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
//* * * *RootFolder + SR.Name
if (SR.Name <> '.') and (SR.Name <> '..') then
FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
until FindNext(SR) <> 0;
finally
FindClose(SR); // hier knallt's dann!
end;
if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory <> faDirectory then
begin
// --> eine Datei wurde gefunden
//* *der Dateiname steht in SR.Name
//* *der vollständige Dateiname (inkl. Pfadangabe) ist
//* * * *RootFolder + SR.Name
FileList.Add(RootFolder + SR.Name);
end;
until FindNext(SR) <> 0;
finally
FindClose(SR); // hier logischerweise auch.
end;
end;