Hallo Marlno!
Zitat von
Marlno:
nur doof ist das jetzt nicht immer eins höher ist sondern 2 höher im result beim aufruf *.*
naja egal wenn verzeichnisse drin wären würde ich es verstehen denn die zählt er ja auch mit aber es sind keine drin und auch keine versteckten oder system files oder sonstiges....
Natürlich hast Du im Verzeichnis 2 Unterverzeichnisse - die heißen '.' und '..'! Probier mal in der DOS-Eingabeaufforderung DIR aus - da siehst Du es (außer im Hauptverzeichnis der Platte).
Bei dem geposteten Code werden die 'gelöscht' (das geht nicht, DeleteFile löscht nur Dateien, für
leere Verzeichnisse ist RemoveDir zuständig).
Folgendes sollte klappen:
Delphi-Quellcode:
Function DeleteAll(Dir, Files : string): Integer;
var
SearchRec : TSearchRec;
begin
Result := 0;
if FindFirst(Dir+Files, faAnyFile, SearchRec) = 0 then begin
try
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then //einfügen
begin //einfügen
DeleteFile(Dir+SearchRec.Name);
inc(Result);
end; //einfügen
until FindNext(SearchRec) <> 0;
finally
FindClose(SearchRec);
end;
end;
end;
Dann werden nur Dateien gelöscht, die keine Directorys sind. Nach dem neu einzufügenden "end" kannst Du auch noch, wenn der Namen ungleich '.' und ungleich '..' ist, die Funktion rekursiv aufrufen, um Unterdirs zu löschen! Nach dem Löschen der Dateien kannst Du ja Removedir versuchen.
Gruß
Dietmar Brüggendiek
Edit: warum geht im Delphi-Source kein Color??