In dem von "waub" verlinkten Thema (das über meinen Link auch aufgelistet wird) ist auch die Abbruchbedingung vorhanden. Das muss bei der Rekursion auch immer so sein, sonst ruft sich die Funktion so lange auf, bis es Speicherprobleme gibt.
Delphi-Quellcode:
if SR.Attr and faDirectory = faDirectory then // Verzeichnis wurde gefunden
if (SR.Name <> '.') and (SR.Name <> '..') then // Verzeichnis ist nicht das aktuelle "." und nicht das übergeordnete ".." Verzeichnis
FindAllFiles(RootFolder + SR.Name, Mask, Recurse); // rekusriver Aufruf
Die Funktion ruft sich somit nur dann selbst wieder auf, wenn ein Unterverzeichnis gefunden wurde.
Übrigens finde ich deine Einstellung super.
Das ist bei weitem nicht selbstverständlich.
Es gibt hier welche, die wollen fertige Lösungen und diese ohne nachzudenken per Copy&Paste übernehmen. Und dann kommen ständig Fragen, wieso dies und jenes nicht funktioniert, wie man den Code ändern muss etc. Deine Einstellung sollten alle haben. Du lernst dadurch viel und kannst später auch selbst Probleme lösen. So macht es Spaß und da helfe ich dann auch gerne.
Grüße, Matze