Moin,
ich habe hier eine Directorystruktur mit 1-3 Unterverzeichnissen:
AA
aa
ab
ac
BB
ba
bb
bba
bbb
bbc
CC
ca
das ganze durchsuche ich mit FindFirst / FindNext:
Delphi-Quellcode:
procedure FindFilesTree(aPath: string);
SearchRec: tSearchRec;
begin
if aPath [Length (aPath)] <> '\' then aPath := aPath + '\';
if FindFirst (aPath + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
// Wenn es sich um ein Verzeichnis handelt
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
begin
(* Tu irgendwas *)
end;
// auf Untereinträge prüfen
FindFilesTree(aPath + SearchRec.Name);
end else
// Eintrag ist eine Datei
if aWithFiles and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
(* Tu irgendwas anderes *)
// solange weiter bis keine weiteren Dateien/Verzeichniss gefunden werden
until FindNext(SearchRec) <> 0;
(* hier für jedes Unterverzeichnis was machen *)
FindClose(SearchRec);
end;
end;
Das ganze klappt auch wunderbar (logisch, hab ich ja auch gut kopiert), aber ...
... die Stelle "(* hier für jedes Unterverzeichnis was machen *)" soll nicht mehr durchlaufen werden wenn es keine weiteren Unterverzeichnisse gibt - also wenn rekursiv alles durchlaufen ist.
Bekomme ich das irgendwie aus dem Ergebnis von FindNext mit oder muss ich da eine Hilfsvariable setzen die mir sagt wie tief ich gerade geschachtelt bin ?
Hans