Seite 2 von 2

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 00:52
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

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 01:08
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

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 01:18
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 ;) )

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 13:10
von RSBasic

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 13:35
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:

Re: CreateDirectoryEx (crossplattform)

Verfasst: 11.01.2014 16:31
von Bisonte
Mein ich doch, Du warst das :mrgreen: