Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Dateien eines Verzeichnisses löschen ?!? (https://www.delphipraxis.net/3574-alle-dateien-eines-verzeichnisses-loeschen.html)

Trouble_Maker 19. Mär 2003 10:45


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:
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;
Aufgerufen wird die Routine z.B. so:

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]

MathiasSimmack 19. Mär 2003 10:50

Auf die Schnelle? Wahrscheinlich liegt´s am fehlenden Backslash:
Code:
DeleteAll('c:\temp','*.*');
Deine Prozedur baut daraus:
Code:
c:\temp*.*
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.

Trouble_Maker 19. Mär 2003 10:54

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

Luckie 19. Mär 2003 11:19

Schon mal probiert, was dir eben gesagt wurde? :roll:

Trouble_Maker 19. Mär 2003 11:21

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

Luckie 19. Mär 2003 11:24

Du sollst aus dem:
Delphi-Quellcode:
DeleteAll('c:\temp','*.*');
das
Delphi-Quellcode:
DeleteAll('c:\temp\','*.*');
machen.

Trouble_Maker 19. Mär 2003 11:50

Juhuuu :-)
ES klappt!

Das das nur an dem Backslash (\) lag... naja egal
danke für eure Hilfe!

bis dann

Trouble_Maker

Trouble_Maker 19. Mär 2003 12:06

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

MathiasSimmack 19. Mär 2003 14:25

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): http://www.swissdelphicenter.ch/en/showcode.php?id=152

sakura 19. Mär 2003 19:35

Zitat:

Zitat von MathiasSimmack
Du solltest mal die Suchfunktion bemühen.

oder in die Code-Library schauen.

http://www.delphipraxis.net/viewtopic.php?t=1451

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz