CreateDirectoryEx (crossplattform)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: CreateDirectoryEx (crossplattform)

Beitrag von Bisonte »

@TS-Soft: Du hattest schonmal eine "MakeDir" Prozedur gebastelt.... (schon ne weile her... ;) )
Dort ist als API "nur" : ExpandEnvironmentStrings_ vorhanden. Evt. ist es einfacher, nur diese Funktion crossplatform
nachzubilden (falls sie das nicht schon ist) ?

Code: Alles auswählen

Procedure      MakeDir(Directory.s, rel2program = #False)
    
    Protected Index = 2, count, i, length
    Protected actDir.s, dir2.s
    
    If Directory = "" : ProcedureReturn #False : EndIf
    length = ExpandEnvironmentStrings_(Directory, @dir2, 0)
    If length
      dir2 = Space(length)
      If ExpandEnvironmentStrings_(Directory, @dir2, length)
        Directory = dir2
      EndIf
    EndIf
    Directory = ReplaceString(Directory, "/", "\")
    If Right(Directory, 1) <> "\" : Directory + "\" : EndIf
    If FileSize(Directory) = -2 : ProcedureReturn #True : EndIf
    If Left(Directory, 1) = "\"
      Directory = Right(Directory, Len(Directory) -1)
    EndIf
    If Not Right(StringField(Directory, 1, "\"), 1) = ":"
      If rel2program
        Directory = GetPathPart(ProgramFilename()) + Directory
      Else
        Directory = GetCurrentDirectory() + Directory
      EndIf
      If FileSize(Directory) = -2 : ProcedureReturn #True : EndIf
    EndIf
    actDir = StringField(Directory, 1, "\") + "\"
    count = CountString(Directory, "\")
    For i = Index To count
      actDir + StringField(Directory, i, "\") + "\"
      If FileSize(actDir) = -2 : Continue : EndIf
      CreateDirectory(actDir)
    Next
    If FileSize(Directory) = -2 : ProcedureReturn #True : EndIf
  EndProcedure
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​​
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: CreateDirectoryEx (crossplattform)

Beitrag von ts-soft »

@Bisonte

Die ist nicht von mir, sicher :mrgreen:

Die Routine ist ja jetzt schon "fetter" als mein Tipp, bringt aber keine Vorteile,
jedenfalls kann ich keine entdecken. Und dieses ReplaceString mit den Slashes
und Backslashes sollte man auch nicht machen, weil Backslashes bestandteil eines
Ordner- oder Dateinamens unter Linux sein könnten! Also wenn aus Backslashes
dann Slashes werden, erzeugt man zusätzliche Ordner und benennt Ordner oder
Dateien um, was ja nicht sinn der Sache ist.

So wie der Tipp im erstem Thread steht, ist er schon in Ordnung, bzw. andere
Versionen, die Rekursiv arbeiten, sind natürlich auch Verwendbar. Davon gibt es
ja bereits eine Menge Beispiele.

Gruß
Thomas
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
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: CreateDirectoryEx (crossplattform)

Beitrag von Bisonte »

ts-soft hat geschrieben:Die ist nicht von mir, sicher :mrgreen:
Ah ok ... ich war mir sicher das Du die gepostet hast, irgendwo im Forum (evt. anderer Prozedurename)....
Vielleicht find ich der/die/das topic ja wieder ;)

Das mit den Dateinamen und BackSlashes unter Linux ... wieder was dazugelernt (FensterUser ;) )
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​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: CreateDirectoryEx (crossplattform)

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: CreateDirectoryEx (crossplattform)

Beitrag von ts-soft »

RSBasic hat geschrieben:http://www.purebasic.fr/german/viewtopic.php?p=284992
Ähnlichkeit ist vorhanden. :mrgreen:
Du sollst nicht im Keller spielen, hör doch mal auf Deine Mama :mrgreen:
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
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: CreateDirectoryEx (crossplattform)

Beitrag von Bisonte »

Mein ich doch, Du warst das :mrgreen:
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​​
Antworten