Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi removedir funzt nicht (https://www.delphipraxis.net/55076-removedir-funzt-nicht.html)

ichbins 16. Okt 2005 14:11


removedir funzt nicht
 
wie der Titel schon sagt:
Ich verwende den folgenden Code:
Delphi-Quellcode:
if not removedir(dirs[i]) then
  raise exception.Create('Fehler beim Löschen.');
dirs[i] existiert (mit [showmessage] und [if directoryexists then showmessage] überprüft)

Ich verwende diesen Befehl in einer selbsterstellten Unit, die folgendes in den Uses stehen hat:
Delphi-Quellcode:
uses
  filectrl, dialogs, classes, sysutils, forms;
Forms und dialogs nur temporär für application.processmessage und showmessage.

Es wird immer eine Exception ausgelöst.

An was könnte das liegen? :gruebel:

CalganX 16. Okt 2005 14:16

Re: removedir funzt nicht
 
Hi,
"funzt nicht" ist immer so aussagekräftig... :roll:
Aber ich gehe mal davon aus, dass die von dir gepostete Exception geraiset wird.

Dann schau dich mal um und gucke in welchem Fall RemoveDir false zurückliefert. Unter Umständen fehlt ein abschließender Backslash (\) oder sowas in der Art.

Chris

ichbins 16. Okt 2005 14:21

Re: removedir funzt nicht
 
ja, meine exception wird ausgelöst. Dateien sind auch nicht drin, auch keine versteckten. Ich such jetzt schon seid 3 Stunden...

r2c2 16. Okt 2005 14:26

Re: removedir funzt nicht
 
Hallo ichbins :hi:

kann es sein, dass dein Verzeichnis nicht leer ist?

mfg

Christian

mirage228 16. Okt 2005 14:27

Re: removedir funzt nicht
 
Hi,

hast Du schon mit SHFileOperationSHFileOperation ausprobiert? Dort wird in den meisten Fällen ein aussagekräfigerer Fehlercode zurückgeliefert.

mfG
mirage228

ichbins 16. Okt 2005 14:29

Re: removedir funzt nicht
 
hi,
@r2c2
hab ich mir auch zuerst gedacht. Dann habe ich ein neues erstellt und bei dem kommt der Fehler auch. Ich verwende den Code in einer Proc, die alle Dateien und Ordner in einem Root sucht und zuerst die Dateien und dann die Ordner löscht...
@mirage
mit filehandels kenn ich mich nich so aus. Ich kann eigentlich nur mit file-of-typen und textfiles umgehen :oops: Können die Handels denn überhaupt auf Ordner zugreifen?

Airblader 16. Okt 2005 14:33

Re: removedir funzt nicht
 
Evtl. verstecke Dateien? (faHidden)

air

ichbins 16. Okt 2005 14:34

Re: removedir funzt nicht
 
ne, ich hab keine versteckten Dateien, es sei denn von Windows automatisch erstellte dinger wie thumbs.db, der Ordner is ja ganz neu... ne, auch keine versteckte systemdatei


gibts noch andere procs, die einen Ordner löschen können?
ich probier mal shfileoperation

mirage228 16. Okt 2005 14:39

Re: removedir funzt nicht
 
Zitat:

Zitat von ichbins
@mirage
mit filehandels kenn ich mich nich so aus. Ich kann eigentlich nur mit file-of-typen und textfiles umgehen :oops: Können die Handels denn überhaupt auf Ordner zugreifen?

Hi,

Du brauchst kein Datei-Handle zu übergeben, sondern lediglich das Fensterhandle (damit SHFileOperation weiss, zu welchem Fenster die angezeigt Fortschrittsanzeige gehören soll u.A.). Dann lediglich das Verzeichnis als Quelldatei angeben und dann als Operation FO_DELTE wählen und dann gehts schon los.

mfG
mirage228

ichbins 16. Okt 2005 14:40

Re: removedir funzt nicht
 
:oops:

probiers mal...

ichbins 16. Okt 2005 14:50

Re: removedir funzt nicht
 
ne, wenn ich es so mach, kommt die Windows-Meldung: "soll der Ordner wirklich gelöscht werden?"
Aber ich bin gerade dabei, eine Vollautomatische Prog zum Löschen von Verzeichnissbäumen zu schreiben, da passt das nicht

aber das ding is super! so was hab ich schon immer gesucht!

marabu 16. Okt 2005 14:51

Re: removedir funzt nicht
 
@ichbins: aus Sicht von RemoveDir() ist ein Ordner nur dann leer, wenn er weder Dateien, noch Unterordner enthält.

Grüße vom marabu

ichbins 16. Okt 2005 14:53

Re: removedir funzt nicht
 
enthält er ja :cry: ich lösche zuerst die Dateien, dann die Ordner untersten levels, bis schließlich zum root-ordner.

mirage228 16. Okt 2005 14:54

Re: removedir funzt nicht
 
Zitat:

Zitat von ichbins
ne, wenn ich es so mach, kommt die Windows-Meldung: "soll der Ordner wirklich gelöscht werden?"
Aber ich bin gerade dabei, eine Vollautomatische Prog zum Löschen von Verzeichnissbäumen zu schreiben, da passt das nicht

aber das ding is super! so was hab ich schon immer gesucht!

Das kannst Du mit einem entsprechendem Flag ("FOF_NOCONFIRMATION") umgehen.

mfG
mirage228

ichbins 16. Okt 2005 14:55

Re: removedir funzt nicht
 
wenn ich bestätige, kommt die Meldung: "Die Datei wird gerade von einer anderen Person bzw. einem anderen Programm verwendet. Bitte versuchen sie es später nochmals..." von was kann ein Ordner denn verwendet werden?

marabu 16. Okt 2005 19:39

Re: removedir funzt nicht
 
Vom Windows Explorer. Versuche mal folgendes: lösche einen Unterordner mit der Hand und versuche anschließend den übergeordneten Ordner - der jetzt leer sein sollte - auch mit der Hand zu löschen. Die Fehlermeldung sollte der ähneln, die dein Programm hier liefert:

Delphi-Quellcode:
if not RemoveDir(dir) then
  ShowMessage(SysErrorMessage(GetLastError));
marabu

CalganX 16. Okt 2005 19:45

Re: removedir funzt nicht
 
Hi,
kann es sein, dass du mit deinem eigenen Programm noch auf eine Datei in diesem Ordner zugreifst?

Chris

marabu 16. Okt 2005 19:50

Re: removedir funzt nicht
 
Hallo Chris, du darfst es natürlich auch probieren. Wenn du XP oder neuer fährst und du kannst einen tree im file system von den leafs her manuell abräumen, dann - nun ja, ich habe hier einen leckeren Besen stehen...

Grüße vom marabu

CalganX 16. Okt 2005 19:52

Re: removedir funzt nicht
 
Hi,
ich kann dir zwar nicht ganz folgen, kann aber derzeit das auch nicht ausprobieren (reite gerade auf einem Tiger durch's Netz ;)).
Ich denke aber eher, dass er noch irgendwo eine Datei nicht geschlossen hat oder so. Mal sehen, was er selber dazu sagt.

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz