Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verzeichnis löschen (https://www.delphipraxis.net/37642-verzeichnis-loeschen.html)

smart 8. Jan 2005 11:32


Verzeichnis löschen
 
Mit RemoveDir kann man ein leeres Verzeichnis löschen. Gibt es auch eine Möglichkeit ein volles Verzeichnis zu löschen oder zu verschieben?

Matze 8. Jan 2005 11:35

Re: Verzeichnis löschen
 
Delphi-Quellcode:
function DelDir(dir: string): Boolean;
uses
ShellApi;
...
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;
Hätte dir aber auch die Suche geliefert.

smart 8. Jan 2005 11:42

Re: Verzeichnis löschen
 
Danke! Muss ich wohl übersehen haben.

SirThornberry 8. Jan 2005 12:20

Re: Verzeichnis löschen
 
na toll, und ich hab mir vorgestern erst eine funktion gebaut die rekursiv die ordner und deren inhalt löscht.

smart 8. Jan 2005 15:54

Re: Verzeichnis löschen
 
Also, bei mir löscht der Programmcode DelDir weder ein volles noch einleeres Verzeichnis :(
Aufgerufen mit :deldir('c:\test'); Das gleicher Prob. habe ich auch mit RemoveDir. Ich komme einfach nicht darauf wo der Fehler liegt. Hat von Euch einer ein Tipp?

SirThornberry 8. Jan 2005 16:23

Re: Verzeichnis löschen
 
wird das verzeichnis eventuell zu dem zeitpunkt verwendet (oder dateien daraus)?

Luckie 8. Jan 2005 16:27

Re: Verzeichnis löschen
 
Rpückgabewert von DelDir prüfen und falls False mit SysErrorMessage GetLastError ausgeben lassen.

smart 8. Jan 2005 16:48

Re: Verzeichnis löschen
 
Ich habe eine TForm. Auf der Form habe ich eine DirectoryListBox und ein Button. Das verzeichnis wähle ich mit der DirectoryListBox aus und durch klick auf den Button lösche ich das Verzeichnis.


Code:
uses shellapi;

function deldir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
deldir(DirectoryListBox1.Directory);
DirectoryListBox1.Update;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;
Als Fehler taucht immer 'Zugriff verweigert' auf. Das Verzeichnis ist aber nicht geschützt!

Muetze1 8. Jan 2005 16:53

Re: Verzeichnis löschen
 
Moin!

Doch! Deine DirectoryListBox greift noch drauf zu und wechselt auch den aktuellen Pfad dementsprechend, daher kann dieser nicht gelöscht werden.

MfG
Muetze1

smart 8. Jan 2005 18:33

Re: Verzeichnis löschen
 
Has Recht! Alles Klaro. Vielen Dank an Euch!

GoTo0815 10. Mär 2008 17:23

Re: Verzeichnis löschen
 
Hallo,

ich versuche auch gerade mit oen genannter function ein Verzeichnis samt Inhalt zu löschen. Leider ohne Erfolg. Meine Fehlermeldung aus: ShowMessage(SysErrorMessage(GetLastError));
lautet: Für diesen Befehl steht nicht genügend Speicher zur Verfügung.

Ich arebiete an einem Notebook mit 2GB Ram, Win XP Prof, Delphi 2007

Wie kann es sein, dass ich kein Verzeichnis löschen kann?

Übrigens der Inhalt des Verzeichnisses ist unter 10MB groß.

GoTo0815 10. Mär 2008 17:25

Re: Verzeichnis löschen
 
Nachtrag: Ich habe alle Komponenten mit Dateizugriffen auf Enabled := False gesetzt

GoTo0815 10. Mär 2008 17:46

Re: Verzeichnis löschen
 
Hallo,

so habe es nun selbst gelöst!

Der Fehler tritt auf, wenn der durch ExtractFilePath erhaltene Wert direkt an die Funktion DelDir übegeben wird. Es muss erst das letzte '\' gelöscht werden.


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