Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ordner und unterordner (nicht unbedingt leer) löschen (https://www.delphipraxis.net/119085-ordner-und-unterordner-nicht-unbedingt-leer-loeschen.html)

cRayZo 20. Aug 2008 21:03


ordner und unterordner (nicht unbedingt leer) löschen
 
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?

Luckie 20. Aug 2008 21:09

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
Am einfachsten geht das wohl mit der API-Funktion MSDN-Library durchsuchenSHFileOperation.

taaktaak 20. Aug 2008 21:11

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
Oder selbstgestrickt und in zwei Schritten:
- erst alle vorhandenen Dateien suchen und löschen
- dann Verzeichnis(se) löschen

cRayZo 20. Aug 2008 21:22

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
wie kann ich denn die dateien in einem Ordner löschen?
(alle txt datein sind in einem ordner, ich muss sie also nicht suchen)

Sidewinder 21. Aug 2008 14:13

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
nichts leichter als das.... :hello:
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..

taaktaak 21. Aug 2008 14:35

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
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?

Sidewinder 21. Aug 2008 14:43

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
hab vergessen die "selfs" zu entfernen...sorry

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

teebee 21. Aug 2008 15:26

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
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);

taaktaak 21. Aug 2008 15:47

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

Warum so kompliziert und fehleranfällig?
Vielleicht aus pädagogischen Gründen? :zwinker:

Sidewinder 21. Aug 2008 16:26

Re: ordner und unterordner (nicht unbedingt leer) löschen
 
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 :coder2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.
Seite 1 von 2  1 2      

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