Seite 1 von 2
Inhalt eines Ordners löschen
Verfasst: 08.02.2015 14:48
von Fanpost
Hallo,
ich quäle mich mit dem Löschen eines Ordnerinhaltes rum und komme nicht zum Ergebnis.
Es soll der Inhalt von "Pic", es sind *.bmp, gelöscht werden.
Was mache ich falsch und wie geht es richtig?
Code: Alles auswählen
Pic_loeschen: ;{
If DeleteDirectory("C:\Bilder\Log\Pic\","", #PB_FileSystem_Recursive)
Gosub liesauftrag
Else
MessageRequester("Information","Konnte Daten nicht löschen!")
EndIf
Return
Return ;}
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 15:36
von Bisonte
Mal ganz abgesehen davon, dass es kein ausführbarer Code ist und mich das Gosub sowie 2x Return stören....
Es gibt noch ein weiteres Flag bei DeleteDirectory() :
#PB_FileSystem_Force
Um mehrere Flags zu kombinieren benutzt man | ...
in deinem Beispiel :
Code: Alles auswählen
DeleteDirectory("C:\Bilder\Log\Pic\","", #PB_FileSystem_Recursive|#PB_FileSystem_Force)
Allerdings kann es sein, dass dein Programm in dem Verzeichnis keine Rechte hat (Windows Vista und höher),
daher sind dann alle Versuche zum scheitern veruteilt.
Abhilfe würde ein kompilieren mit dem "Request Admin Rights" Flag schaffen.
Edit:
Kleiner Tipp zum einsteigen :
Einfach mit dem Cursor auf die ausgeschriebene Funktion im Quellcode gehen,
und F1 drücken, schon öffnet sich die Hilfe und zeigt einem alle Möglichkeiten der Syntax, sowie einige Erklärungen
an. So fing jeder mal an....

Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 16:46
von Fanpost
Der Inhalt des Verzeichnisse wird immer noch nicht mit
Code: Alles auswählen
DeleteDirectory("C:\Bilder\Log\Pic\","", #PB_FileSystem_Recursive|#PB_FileSystem_Force)
gelöscht. Ok, war ein Return zu viel. Soll ein Unterprogramm zum Löschen des Inhaltes vom Verzeichnis "Pic" werden.
Auch mit dem "Request Admin Rights" Flag funktioniert es nicht.
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 16:55
von Bisonte
probiere einmal einen Ordner aus, der ganz woanders liegt. D: oder ein USB Stick...
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:11
von Fanpost
Habe es auf einem anderen Laufwerk und USB versucht, nein, funktioniert nicht
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:18
von edel
Versuch es mal mit einem Pattern "*.bmp"
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:18
von Bisonte
Also folgender Code funktioniert tadellos bei mir :
Ich erstellte das besagte Verzeichnis und fügte eine Datei hinzu.
Code: Alles auswählen
Source.s = "D:\Bilder\Log\Pic\"
Pattern.s = ""
A = DeleteDirectory(Source, Pattern, #PB_FileSystem_Force|#PB_FileSystem_Recursive)
Debug a
Es wird eine 1 ausgegeben und das Verzeichnis Pic sowie der Inhalt ist futsch.
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:27
von Nino
Wenn eine Datei (oder mehrere) in dem betr. Verzeichnis von einem anderen Programm geöffnet ist, kann DeleteDirectory() diese nicht löschen (auch nicht mit #PB_FileSystem_Force), und folglich auch nicht das betr. Verzeichnis.
Wenn dies nicht der Fall ist, funktioniert DeleteDirectory() bei mir wie erwartet (Windows 7, diverse PB-Versionen).
Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:28
von ts-soft
Probiere mal folgende Zeile, ohne Deinen Extracode!
Code: Alles auswählen
Debug DeleteDirectory("C:\Bilder\Log\Pic\", "", #PB_FileSystem_Recursive | #PB_FileSystem_Force)
>> Soll ein Unterprogramm zum Löschen des Inhaltes vom Verzeichnis "Pic" werden.
Dann nimm doch bitte Proceduren! Gosub/Return funktioniert nicht unter allen Umständen und ist veraltet.
Gruß
Thomas
// edit
Erster Teil hat sich erledigt, Bisonte war schneller

Re: Inhalt eines Ordners löschen
Verfasst: 08.02.2015 17:41
von Fanpost
Wenn man ein gewisses Alter erreicht hat sollte man mit dem Programmieren aufhören.
Bei uns im Büro würden die Mitarbeiter nun vom Fehlercode 73 sprechen. Fehler liegt zwischen Schreibtisch und Stuhl.
Der Fehler lag bei mir, ich hatte das Verzeichnis falsch angegeben, d.h. bei meinem Original-Prog liegt das Verzeichnis in C:\Bilder-Alt\Code\Pic\. Ich habe das Verzeichnis in PureBasic immer mit
C:\Bilder_Alt\Code\Pic\ angegeben. Sche... Unterstrich.
Entschuldigung, war mein Fehler. Vielen Dank für die Bemühungen.