Hallo,
ich habe in der CodeLib hier bereits einen Beitrag gefunden, mit dem Dateien in einem Verzeichnis (inkl. Unterverzeichnisse) suchen kann.
Jedoch hatte diese Funktion einen Haken. Wenn im ersten angegebenen Pfad keine entsprechende Datei war, sprang die Procedure sofort raus.
Ich habe das ganze daher ein wenig um gebastelt.
Nun habe ich aber das Problem, dass manchmal eine AccessViolation (in ntdll.dll) auftritt!
Delphi-Quellcode:
procedure TSearchFiles.FindFile(RootFolder, Mask: String; SaveTo: TStringList; FoundFirst: Boolean);
var
SR,SR2: TSearchRec;
begin
if AnsiLastChar(RootFolder)^ <> '\' then
RootFolder := RootFolder + '\';
if Mask = '' then
Mask := '*.*';
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = faDirectory then
begin
if (SR.Name <> '.') and (SR.Name <> '..') then
FindFile(RootFolder + SR.Name, Mask, SaveTo, FoundFirst); // <-- AccessViolation hier nach ner Zeit
end else
if not FoundFirst then
begin
if FindFirst(RootFolder + Mask, faAnyFile, SR2) = 0 then
begin
SaveTo.Add(RootFolder + SR2.Name);
FoundFirst := True;
end;
end else
begin
if FindNext(SR2) = 0 then
SaveTo.Add(RootFolder + SR2.Name);
end;
until (FindNext(SR) <> 0);
finally
FindClose(SR);
FindClose(SR2);
end;
end;
Woran liegts??
mfg
mirage228
David F.