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?
|
Re: Verzeichnis löschen
Delphi-Quellcode:
Hätte dir aber auch die Suche geliefert.
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; |
Re: Verzeichnis löschen
Danke! Muss ich wohl übersehen haben.
|
Re: Verzeichnis löschen
na toll, und ich hab mir vorgestern erst eine funktion gebaut die rekursiv die ordner und deren inhalt löscht.
|
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? |
Re: Verzeichnis löschen
wird das verzeichnis eventuell zu dem zeitpunkt verwendet (oder dateien daraus)?
|
Re: Verzeichnis löschen
Rpückgabewert von DelDir prüfen und falls False mit SysErrorMessage GetLastError ausgeben lassen.
|
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:
Als Fehler taucht immer 'Zugriff verweigert' auf. Das Verzeichnis ist aber nicht geschützt!
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; |
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 |
Re: Verzeichnis löschen
Has Recht! Alles Klaro. Vielen Dank an Euch!
|
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ß. |
Re: Verzeichnis löschen
Nachtrag: Ich habe alle Komponenten mit Dateizugriffen auf Enabled := False gesetzt
|
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