AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ordner und unterordner (nicht unbedingt leer) löschen
Thema durchsuchen
Ansicht
Themen-Optionen

ordner und unterordner (nicht unbedingt leer) löschen

Ein Thema von cRayZo · begonnen am 20. Aug 2008 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

ordner und unterordner (nicht unbedingt leer) löschen

  Alt 20. Aug 2008, 21:03
hi, ich möchte einen ordner löschen, der unterordner und textdateien drin hat. Bisher weiß ich nur, wie man leere ordner löschen kann..

RmDir RemoveDir etc..

kann mir jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 20. Aug 2008, 21:09
Am einfachsten geht das wohl mit der API-Funktion MSDN-Library durchsuchenSHFileOperation.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 20. Aug 2008, 21:11
Oder selbstgestrickt und in zwei Schritten:
- erst alle vorhandenen Dateien suchen und löschen
- dann Verzeichnis(se) löschen
Ralph
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#4

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 20. Aug 2008, 21:22
wie kann ich denn die dateien in einem Ordner löschen?
(alle txt datein sind in einem ordner, ich muss sie also nicht suchen)
  Mit Zitat antworten Zitat
Sidewinder
(Gast)

n/a Beiträge
 
#5

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 14:13
nichts leichter als das....
Delphi-Quellcode:
uses attr;
 var findresult : integer;
     dirinfo : Tfilesearchrec;
     label jumpfindnext; //jumpmark
...
  findresult := attr.Findfirst({pfad}'*.*',{attribute}attr.Canyfile,dirinfo);
  if findresult = 0 then
  begin
    repeat
      if self.dirinfo.name = '.'           then goto jumpfindnext;
      if self.dirinfo.name = '..'          then goto jumpfindnext;
      if self.dirinfo.attr and attr.Cfolder <> 0 then
      begin
        //ordner gefunden
          goto jumpfindnext;
      end;
      //datei gefunden
      //hier kannst du löschen..
      jumpfindnext:
    until (attr.FindNext(self.dirinfo) <> 0);
    attr.FindClose(self.dirinfo);
  end
  else
    //errorstuff
hab meine attr.pas noch dazugepackt..
Angehängte Dateien
Dateityp: pas attr_167.pas (4,8 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 14:35
3 kurze Anmerkungen:
  • Eine Suche nach den Dateien ist schon erforderlich, da der Löschprozedur keine Wildcards übergeben werden können. Nur absolute Pfade. Insofern kannst du mit der Angabe "*.txt" direkt keine Löschoperationen starten.
  • Der vorstehende Codeschnipsel ist optimierungsfähig. Insbesondere sind die GOTO's entbehrlich. Sollte man sich besser gar nicht erst angewöhnen; sind auch meist durch bessere Strukturen zu vermeiden.
  • Solle das 'ne freie Prozedur oder eine Methode sein?
Ralph
  Mit Zitat antworten Zitat
Sidewinder
(Gast)

n/a Beiträge
 
#7

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 14:43
hab vergessen die "selfs" zu entfernen...sorry

löschen ist möglich mit
"dirinfo.name"
mit der pfadangabe natürlich
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#8

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 15:26
Warum so kompliziert und fehleranfällig? Luckie hat doch schon die Lösung gepostet.
Delphi-Quellcode:
Uses ShellApi;

Var shfop: TSHFILEOPSTRUCT;

  ZeroMemory(@shfop,sizeof(shfop));
  shfop.pFrom := PChar(FolderToDelete+#0); // doppelte Null am Ende
  shfop.fFlags := FOF_SILENT Or FOF_NOCONFIRMATION;
  shfop.wFunc := FO_DELETE;
  SHFileOperation(shfop);
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 15:47
Zitat:
Warum so kompliziert und fehleranfällig?
Vielleicht aus pädagogischen Gründen?
Ralph
  Mit Zitat antworten Zitat
Sidewinder
(Gast)

n/a Beiträge
 
#10

Re: ordner und unterordner (nicht unbedingt leer) löschen

  Alt 21. Aug 2008, 16:26
für Probleme gibt es immer mehr als eine lösung....
Zitat:
Vielleicht aus pädagogischen Gründen
warum nicht... immer ein schritt nach dem anderen
erst 0815 dann supercoder
  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 08:52 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