Inhalt eines Ordners löschen

Anfängerfragen zum Programmieren mit PureBasic.
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Inhalt eines Ordners löschen

Beitrag 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 ;}
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Inhalt eines Ordners löschen

Beitrag 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.... ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Re: Inhalt eines Ordners löschen

Beitrag 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.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Inhalt eines Ordners löschen

Beitrag von Bisonte »

probiere einmal einen Ordner aus, der ganz woanders liegt. D: oder ein USB Stick...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Re: Inhalt eines Ordners löschen

Beitrag von Fanpost »

Habe es auf einem anderen Laufwerk und USB versucht, nein, funktioniert nicht
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Inhalt eines Ordners löschen

Beitrag von edel »

Versuch es mal mit einem Pattern "*.bmp"
Zuletzt geändert von edel am 08.02.2015 17:19, insgesamt 1-mal geändert.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Inhalt eines Ordners löschen

Beitrag 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.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Inhalt eines Ordners löschen

Beitrag 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).
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Inhalt eines Ordners löschen

Beitrag 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 :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Re: Inhalt eines Ordners löschen

Beitrag 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.
Antworten