Seite 1 von 1

Mehrere Dateiordner aufeinmal erstellen

Verfasst: 04.11.2015 16:43
von NeoChris
Hallo,
ich erstelle mit Ordner mit CreateDirectory () aber stelle fest das immer nur ein Ordner erstellt wird.
Wen im Pfad ein nicht existierender Zwischenordner gibt dann steigt er aus und kann nich bis zum letzten Ordner erstellen.
Ist das ein Bug?
Muss ich jeden Ordner einzeln erstellen ?

Code: Alles auswählen

CreateDirectory("Ordner1")
CreateDirectory("Ordner1\Ordner2")
CreateDirectory("Ordner1\Ordner2\Ordner3")
CreateDirectory("Ordner1\Ordner2\Ordner3\Ordner4")
CreateDirectory("Ordner1\Ordner2\Ordner3\Ordner4\Ordner5")
Geht es auch einfacher?

__________________________________________________
Code-Tags hinzugefügt
04.11.2015
RSBasic

Re: Mehrere Dateiordner aufeinmal erstellen

Verfasst: 04.11.2015 16:47
von RSBasic
Das ist kein Bug. Das einmalige Erstellen von mehreren Verzeichnissen wird nicht unterstützt.
Das steht auch in der PB-Hilfe:
CreateDirectory() hat geschrieben:Diese Funktion schlägt fehl, wenn das übergeordnete Verzeichnis ("Parent") des neuen Verzeichnisses nicht existiert. Um mehrere Ebenen an Verzeichnissen zu erstellen, muss diese Funktion für jede zu erstellende Verzeichnisebene separat aufgerufen werden.
Um mehrere Verzeichnisse auf einmal erstellen zu können, kannst du eine automatisierte Funktion schreiben.
Normalerweise hätte ich dir jetzt MakeSureDirectoryPathExists_() empfohlen, aber da diese WinAPI-Funktion nicht im Unicode-Modus funktioniert und da PureBasic zukünftig nur noch Unicode anbieten möchte, kannst du auch die folgende von ts-soft geschriebene Funktion verwenden: http://www.purebasic.fr/german/viewtopic.php?p=284992
Oder: http://www.purebasic.fr/german/viewtopi ... =8&t=27633

Am besten erstellst du zusätzlich ein Macro und überschreibst den Funktionsaufruf, so dass du weiterhin mit CreateDirectory() deine Verzeichnisse erstellen kannst, ohne den Namen der erweiterten Funktion wissen zu müssen. So mach ich das immer, wenn ich vorhandene PB-Funktionen erweitern oder verbessern möchte.
Also einfach zusätzlich:

Code: Alles auswählen

Macro CreateDirectory(DirectoryName)
  ForceDirectories(DirectoryName);oder CreateDirectoryEx()
EndMacro

Re: Mehrere Dateiordner aufeinmal erstellen

Verfasst: 04.11.2015 17:00
von NeoChris
thx