![]() |
Alle Dateien eines Verzeichnisses löschen ?!?
Hiho,
kann mir mal jemand sagen, wieso dieser Code nicht funktioniert ?!? : Mit DeleteFile kann man leider nur einzelne Dateien löschen. Die folgende Procedure löscht sämtliche Dateien eines Verzeichnisses:
Delphi-Quellcode:
Aufgerufen wird die Routine z.B. so:
procedure DeleteAll(Dir, Files : string);
var SearchRec : TSearchRec; begin if FindFirst(Dir+Files, faAnyFile, SearchRec) = 0 then begin DeleteFile(SearchRec.Name); while FindNext(SearchRec) = 0 do DeleteFile(Dir + SearchRec.Name); end; FindClose(SearchRec); end; DeleteAll('c:\temp','*.*'); Also bei mir klappt das nicht, also das Programm startet und gibt kein Fehler aus, aber die Dateien sind nicht gelöscht! Danke Trouble_Maker [edit=sakura]Jahre später... Delphi-TAGs eingefügt *g* Mfg, sakura[/edit] |
Auf die Schnelle? Wahrscheinlich liegt´s am fehlenden Backslash:
Code:
Deine Prozedur baut daraus:
DeleteAll('c:\temp','*.*');
Code:
Alternativ schau dir doch mal "SHFileOperation" an. Dabei handelt es sich um die Shell-Funktion, die der Windows-Explorer zum Kopieren, Löschen und Verschieben benutzt. Vorteil: bei längeren Operationen hast du eine Fortschrittsanzeige, und (sofern aktiviert!) werden die Dateien im Papierkorb des Systems abgelegt ... Letzteres hängt davon ab, ob der User diese Funktionalität nutzt.
c:\temp*.*
|
hmmm... ?
leider kenn ich mich noch nich soo gut in Delphi aus! kann mir vielleicht jemand ein Code posten, wie ich Dateien in einem Verzeichnis löschen kann !?! wäre nett... Trouble_Maker |
Schon mal probiert, was dir eben gesagt wurde? :roll:
|
nein hab ich nich, weil ich mich einfach noch nich gut genug auskenne! Ich hab (fast) keine Ahnung, was ich da anstellen soll
bitte schreibt einer nen Code :-D |
Du sollst aus dem:
Delphi-Quellcode:
das
DeleteAll('c:\temp','*.*');
Delphi-Quellcode:
machen.
DeleteAll('c:\temp\','*.*');
|
Juhuuu :-)
ES klappt! Das das nur an dem Backslash (\) lag... naja egal danke für eure Hilfe! bis dann Trouble_Maker |
so hab jetzt doch noch ne Frage *g*
Soweit klappt das alles, aber was is mit den Ordnern (in z.B. Windows\Temp\) ??? Die möchte ich auch gelöscht haben, weil ich mit einem klick mein Windows-Temp (etc..) löschen will! Wie geht das mit den Ordnern löschen ?!? Danke Trouble_Maker |
Du solltest mal die Suchfunktion bemühen. IMO existieren hier im Forum mehrere Lösungen. Das Zauberwort lautet "rekursiver" Aufruf, d.h. du musst in deiner Prozedur auch nach Ordnern suchen, dann in diese Ordner springen und die Prozedur erneut aufrufen.
Der EDH enthält ebenfalls ein Beispiel. Aber spätestens hier wäre mein Vorschlag für die eleganteste und kürzeste Methode noch einmal der Verweis auf die Shell-Funktion SHFileOperation. Auch dafür sollte der EDH ein Beispiel enthalten. Ansonsten (bei AUQ.de gefunden): ![]() |
Zitat:
![]() ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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