Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

problem mit FindAllFiles (codelib)

  Alt 13. Mai 2007, 15:27
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;
Marco Steinebach
  Mit Zitat antworten Zitat