Wie du schon herausgefunden hast funktioniert das ganze über Rekursion.
Das bedeutet das sich eine Procedure solange immer wieder selber aufruft bis eine bestimmte Bedingung erfüllt ist. In deinem Fall ist die so genannte Abbruchbedingung das keine Unterverzeichnis im aktuellen Verzeichnis vorhanden ist.
In Pseudocode könnte das ganze so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function GetFolderSize(AStartPath: string): Int64; var sr: TSearchRec; begin result := 0; gib mir ersten Eintrag im Verzeichnis (findFirst(sr, ...)) wenn einen Eintrag gefunden beginne fußgesteuerte Schleife ist gefundener Eintrag eine Datei : result := result + größe der Datei if gefundener Eintrag ein Verzeichnis : result := result + GetFolderSize(AStartPath+'\'+Name von Verzeichnis) ende der Schleife : beende wenn kein weiterer Eintrag in Verzeichniss ist (FindNext(sr)) end; |
Moderiert von
Klabautermann: Code- durch Delphi-Tags ersetzt.
_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?