ich stehe mal wieder auf dem schlauch:
ich habe mir eine funktion zusammengebastelt, die überprüft ob in einem verzeichnis keine dateien mehr vorhanden sind, und das dieses verzeichnis später problemlos gelöscht werden kann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function DirIsEmpty(Path:String):boolean; var SR: TSearchRec; const Filter:string = '*'; begin result:=true; Path:=IncludeTrailingPathDelimiter(Path); if FindFirst(Path+Filter,faAnyFile - faDirectory,SR)=0 then repeat if (SR.Attr <> faDirectory) then begin result:=false; end;
if (SR.Attr = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then begin result := DirIsEmpty(Path + SR.Name + '\'); end; until (FindNext(SR) <>0) or (result=false); FindClose(SR); end; |
aber irgendwas funktioniert bei der funktion nicht so wie ich es mir gedacht hab:
wenn sich mehrere unterverzeichnisse in dem ordner befinden, und in einem der verzeichnisse eine datei befindet liefert die funktion dennoch den wert "true" (verzeichnisse leer) aus.
ich glaube das problem ist, das die markierte abfrage einfach die dateien im unterordner bzw die ordner nicht erkennt und deshalb den code nicht ausführt.
ich komm aber grad nicht dahinter warum die funktion sich so verhält. wäre für einen gedankenanstoss dankbar.