AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dateien in einem Verzeichnis löschen ohne den Ordner selber
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien in einem Verzeichnis löschen ohne den Ordner selber

Ein Thema von Mazel · begonnen am 20. Jul 2007 · letzter Beitrag vom 20. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

Dateien in einem Verzeichnis löschen ohne den Ordner selber

  Alt 20. Jul 2007, 18:07
Hallo,

ich suche eine Möglichkeit, schnell alle Dateien in einem Verzeichnis zu löschen, auch Unterverzeichnisse ohne das eigentliche Verzeichnis mit zu löschen.
Ich habe mir gedacht zunächst alle Dateien mit FindFirst/FindNext aufzulisten und diese dann zu löschen. Dieser Vorgang dauert aber auch seine gewissen Zeit.
Zudem würde ich das gerne mit einem Fortschrittsbalken verbinden.

Das Problem ist also eine schnelle Möglichkeit zu finden.

Hat jemand eine Idee?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 18:09
mit SHFileOperation kannst du mehrere Dateien löschen. Es wird dann auch automatisch der Fortschritt angezeigt.

Danach kannst du ja wieder den Ordner erstellen.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 18:23
Diese Lösung habe ich mir auch schon angeschaut würde ich auch verwenden, aber ich frage ja nicht umsonst nach einer Möglichkeit nur den Inhalt zu löschen, denn wenn ich einen tragbaren Player angeschlossen habe, bei dem ich den Inhalt in H:\ löschen möchte, kann ich nicht H:\ neu anlegen bzw. die gezeigte Routine läuft dann leider nicht weil sie ja H:\ auch löschen möchte.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 18:46
die Funktion akzeptiert auch mehrere Dateien und Ordner. Du musst also nur die Unterobjekte dort übergeben, welches mit FindFirstFile schnell geht.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 18:51
In dem Verzeichnis sind aber nicht nur Unterordner sondern möglichwerweise auch mehrere 100 anderer Dateien. Da muss ich ja H:\ angeben und das geht leider nicht.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 18:55
du zählst die Dateien und Ordner von H: mit FindFirst auf. Das geht sehr schnell, selbst bei 100 Dateien und mehr.
Dann kannst du diese Dateinamen der Funktion übergeben, indem du einen entsprechend großen Speicherbereich erstellst und dort die Datei/Ordnerpfade (h:\XY) reinkopierst und mit #0 trennst, bzw. mit #0#0 abschliest.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 19:21
Hallo Marcel,

hast du es mit Wildcard-Angabe versucht?

Delphi-Quellcode:
var
  Info : TSHFileOpStruct;
begin
  FillChar (Info, SizeOf(Info), 0);
  Info.wFunc := FO_DELETE;
  Info.pFrom := 'd:\YourFolder\*'#0;
  Info.pTo := nil;

  SHFileOperation(Info);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#8

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 19:33
Zitat:
Wildcard-Angabe
Damit funktioniert es.

Wieder mal nicht auf das einfachste gekommen

[Edit]
Was ist eigentlich mit #0 gemeint?
[/Edit]

Danke
Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 21:41
Zitat von Mazel:
Was ist eigentlich mit #0 gemeint?
Lauf Microsoft-Dokumentation können pFrom und pTo mehrere nullterminierte Dateinamen enthalten. Das Ende jeder Liste muß durch ein zusätzliches Null-Zeichen gekennzeichnet werden. Das Stringende-Zeichen fügt Delphi für uns hinzu (jeder String endet im Speicher mit #0), das Listenende-Zeichen müssen wir selbst anhängen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#10

Re: Dateien in einem Verzeichnis löschen ohne den Ordner sel

  Alt 20. Jul 2007, 22:14
OK,

danke für die Info.

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:51 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