Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alle deteien eines Ordners löschen??? (https://www.delphipraxis.net/30632-alle-deteien-eines-ordners-loeschen.html)

romber 27. Sep 2004 13:19


Alle deteien eines Ordners löschen???
 
Hallo!

Wie kann ich alle Dateien eines Ordners löschen?

maxk 27. Sep 2004 13:26

Re: Alle deteien eines Ordners löschen???
 
Delphi-Quellcode:
function RemoveDirectories(Dir:string):boolean;
// This function deletes a directory and returns the result of deletion
var SR:TSearchRec;
    Continue:boolean;
begin
 Result:=False;
 Dir:=BackSlash(Dir);
 Continue:=FindFirst(Dir+'*.*',faAnyFile,SR)=0;
 while Continue do try
  if copy(SR.Name,1,1)='.' then System.Continue;
  if not DirectoryExists(Dir+SR.Name) then begin
   SetFileAttributes(PChar(Dir+SR.Name),FILE_ATTRIBUTE_NORMAL);
   DeleteFile(Dir+SR.Name);
  end else RemoveDirectories(Dir+SR.Name);
 finally
   Continue:=FindNext(SR)=0;
 end;
 FindClose(SR);

 SetFileAttributes(PChar(Dir),FILE_ATTRIBUTE_NORMAL);
 Delete(Dir,length(Dir),1);
 if length(Dir)>0 then Result:=RemoveDir(Dir);
end;
Das habe ich im StartMenuCleaner benutzt, aber manchmal scheint es Probleme zu geben - warum weiss ich nicht :gruebel:

Akut-Programming 27. Sep 2004 13:27

Re: Alle deteien eines Ordners löschen???
 
Hi!

Du könntest einen ordner über n OpenDialog auswählen, in dem die Dateien gelöscht werden sollen, dann lädtst du alle Dateien incl. ihrer Pfade in eine Listbox oder so und arbeitest dann mit DeleteFile. Es gibt gleube auch Funktionen um einen gesamten Ordner zu löschen. Hast du schonmal in der DP gesucht??

Gruß,
Sascha

Muetze1 27. Sep 2004 14:17

Re: Alle deteien eines Ordners löschen???
 
Moin!

Wie bitte? Alle Dateien in eine ListBox laden? Du willst hier wirklich jemanden beibringen das er eine visuelle Komponente nehmen muss um eine Liste von Strings zu haben? Bring ihnen lieber bei wie man das ganze mit einer TStringList macht...

MfG
Muetze1

Akut-Programming 27. Sep 2004 14:20

Re: Alle deteien eines Ordners löschen???
 
Zitat:

Zitat von Muetze1
Bring ihnen lieber bei wie man das ganze mit einer TStringList macht...

Hast ja recht, mit ner StringList gehts schneller und auch einfacher. :oops: Ich bin nur davon ausgegangen, das er es OOP schreiben will und somit den Usern bevor der Ordner gelöscht wird, vielleicht zur Sicherheit erstmal zeigen will, welche Dateien da überhaupt drin sind! Wäre sinnlos, wenn der Nutzer erst den Explorer öffnen müsst und da dann nachschaut. Da wärs aus der Anwendung raus komfortabler. :zwinker:

Gruß,
Sascha

MathiasSimmack 27. Sep 2004 14:22

Re: Alle deteien eines Ordners löschen???
 
Zitat:

Zitat von maxk
Das habe ich im StartMenuCleaner benutzt, aber manchmal scheint es Probleme zu geben - warum weiss ich nicht :gruebel:

Wie äußern sich die?

maxk 27. Sep 2004 14:50

Re: Alle deteien eines Ordners löschen???
 
Gelegentlich haut er das Unterverzeichnis mit weg. Also der Aufruf mit C:\Test\Hallo\, löscht C:\Test gleich mit. Aber ich kriege den Fehler nicht reproduziert (tritt immer mal so auf) und imo ist der orbige Code richtig.

MathiasSimmack 27. Sep 2004 15:17

Re: Alle deteien eines Ordners löschen???
 
Klingt, als würde er eine Ebene zu hoch springen, bzw. als würde sich die Funktion eben einmal zu oft aufrufen. Muss dein Programm auch unter anderen OS laufen oder nur unter Windows? In dem Fall würde ich kurzerhand zur bekannten Explorer-Löschfunktion (SHFileOperation) greifen. Da dürfte so ein Problem nicht auftreten, und du kriegst auch noch ´ne schicke Statusanzeige. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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