![]() |
Delphi-Version: 6
Dateien in einem Ordner löschen
hallo, mit folgender Funkion möchte ich alle Dateien in einem Ordner löschen, die selbst keine Ordner sind.
Code:
Jetzt werden nicht alle Daten gelöscht und bleiben welche über, ich denke es ist deshalb, weil ich die Datei lösche bevor ich auf next springe. Ich habe es so versucht zu lösen, dass ich mir den Dateinamen merke und dann erst beim nächsten Durchlauf sie lösche. Aber so bleibt dann immer eine Datei am Ende übrig. Wie löse ich am besten, dass auch die letzte Datei gelöscht wird?
SearchPattern := IncludeTrailingPathDelimiter(aPath) + '*.*';
if FindFirst(SearchPattern, faAnyFile, Rec) = 0 then begin try repeat if Rec.Attr and faDirectory = 0 then begin delete(aPath+Rec.Name); end; until (FindNext(Rec) <> 0); finally SysUtils.FindClose(Rec); end; end; |
AW: Dateien in einem Ordner löschen
Delphi-Quellcode:
PROCEDURE DeleteFilesInDirectory(const Path:String);
var I,R:Integer; SR:TSearchRec; List:TStringList; begin List:=TStringList.Create; R:=FindFirst(Path+'\*.*', faAnyFile,SR); while R=0 do begin if (SR.Attr and faDirectory<>faDirectory) then List.Add(Path+'\'+SR.Name); R:=FindNext(SR); end; FindClose(SR); for I:=0 to List.Count-1 do DeleteFile(List[I]); List.Free; end; |
AW: Dateien in einem Ordner löschen
![]() Und noch einen Blick auf ein paar, inzwischen schon einige Jahre alte, Funktionen.
Delphi-Quellcode:
for S in TDirectory.GetFiles(Path) do // GetFiles liest zuerst in ein String-Array und das wird am Ende abgearbeitet
TFile.Delete(S); |
AW: Dateien in einem Ordner löschen
TDirectory etc. geht aber nicht wenn die Delphi Version des tragenden wirklich Delphi 6 ist. Der sollte sich Mal Gedanken machen ob ein Update drin ist. Seit D6 gab's so viele schöne neue Erweiterungen...
|
AW: Dateien in einem Ordner löschen
Jo, es heißt ja nicht dass es so bleiben muß. :zwinker:
Wobei ich dachte IncludeTrailingPathDelimiter wurde auch erst nach D6 erfunden, so zu Zeiten, als die neue IDE auftauchte oder die mobilen Platformen dazu kamen, aber vielleicht kam es ja doch schon vom Kylix. (IncludeTrailingBackslash) Ansonsten kann man sich ja auch Anrekungen holen. z.B. das Suchen der Dateien in eine Funktion auslagern, und dann ebenfalls das Ergebnis nutzen. |
AW: Dateien in einem Ordner löschen
[OT]
Zitat:
[/OT] Grüße Dalai |
AW: Dateien in einem Ordner löschen
Zitat:
|
AW: Dateien in einem Ordner löschen
Moin...:P
Möööp... try/finally (List) ist hoffentlich kein Femdwort. :zwinker: |
AW: Dateien in einem Ordner löschen
Zitat:
|
AW: Dateien in einem Ordner löschen
Moin...:P
Zitat:
Delphi-Quellcode:
procedure DeleteFilesInDirectory(const Path: string);
var I: Integer; R: Integer; SR: TSearchRec; List: TStringList; begin List := TStringList.Create; try R := FindFirst(Path + '\*.*', faAnyFile, SR); while R = 0 do begin if (SR.Attr and faDirectory <> faDirectory) then begin List.Add(Path + '\' + SR.Name); end; R := FindNext(SR); end; FindClose(SR); for I := 0 to List.Count - 1 do begin DeleteFile(List[I]); end; finally List.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz