AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Alle Dateien eines Verzeichnisses löschen ?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Dateien eines Verzeichnisses löschen ?!?

Ein Thema von Trouble_Maker · begonnen am 19. Mär 2003 · letzter Beitrag vom 23. Aug 2003
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#1

Alle Dateien eines Verzeichnisses löschen ?!?

  Alt 19. Mär 2003, 10:45
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]
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2
  Alt 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.
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 19. Mär 2003, 11:19
Schon mal probiert, was dir eben gesagt wurde?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#5
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 19. Mär 2003, 11:24
Du sollst aus dem:
DeleteAll('c:\temp','*.*'); das
DeleteAll('c:\temp\','*.*'); machen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#7
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von Trouble_Maker
Trouble_Maker

Registriert seit: 30. Jan 2003
244 Beiträge
 
Delphi 6 Personal
 
#8
  Alt 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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 19. Mär 2003, 19:35
Zitat von MathiasSimmack:
Du solltest mal die Suchfunktion bemühen.
oder in die Code-Library schauen.

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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.
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