![]() |
Ordner nebst Unterordnern durchsuchen
Hallo
Ich will Ordner und alle Unterordner nach Dateien rekursiv durchsuchen. Wenn ich die Rekursion entferne, funktioniert alles. Sobald allerdings die Funktion in sich nochmal aufgerufen wird, schmiert mein Programm ab. Hier der Code:
Delphi-Quellcode:
Achso, "list" ist hier vom Typ TStringList. Dort sollen dann halt alle gefundenen Dateien aufgelistet werden.
procedure FindAllFiles(aPath:string; aMask:string; aAttr:integer);
var aRes:TSearchRec; EOFound:boolean; Filename:string; fileAttr:integer; Begin EOFound:=false; if FindFirst(aPath+aMask,aAttr,aRes) < 0 then exit; while not EOFound do Begin Filename:=aRes.Name; fileAttr:=FileGetAttr(Filename); if (fileAttr and faDirectory)=faDirectory then Begin if (Filename<>'.') and (Filename<>'..') then FindAllFiles(aPath+Filename+'\',aMask,aAttr); End else list.add(filename); EOFound:=(FindNext(aRes)<>0); End; FindClose(aRes); end; |
Re: Ordner nebst Unterordnern durchsuchen
Kannst du "schmiert ab" genauer beschreiben? Das würde einem unter Umständen sogar einen Blick auf den Quellcode ersparen.
|
Re: Ordner nebst Unterordnern durchsuchen
Vor kurzem wurde hier ne gute Klasse für sowas reingestellt, vllt währe das was für dich, wenn es nun auch nicht direkt was zu dem Problem ist:
![]() |
Re: Ordner nebst Unterordnern durchsuchen
@SirThornberry:
access violation at 0x7c91e8e6: write of address 0x00030ffc @ lbccaleb: Danke, ich schaue mal. |
Re: Ordner nebst Unterordnern durchsuchen
Ich sehe gerade was ganz anderes was vielleicht auch den Fehler auslöst:
Delphi-Quellcode:
1.) Das ganze ist zum scheitern verurteilt weil Filename bei dir nur der relative Dateiname zum aktuell durchsuchten Pfad ist und somit wird die Datei so gut wie nie gefunden.
fileAttr:=FileGetAttr(Filename);
2.) Das ganze ist überflüssig da du die Dateiattribute bereits im TSearchRec hast welches durch FindFirst und FindNext gefüllt wird. |
Re: Ordner nebst Unterordnern durchsuchen
Zitat:
Dann gibt es auch noch einige andere FindAllFiles-Funktionen in der DP und CodeLib. ![]() ![]() Zitat:
[add] Der Gund ist Zitat:
aber
Delphi-Quellcode:
{ The system cannot find the file specified. }
ERROR_FILE_NOT_FOUND = 2; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz