Seite 2 von 4

Verfasst: 20.05.2007 21:41
von String
:oops: Na dann halt so. :oops: thanks! :allright:

Code: Alles auswählen

Procedure CreateTopDirectory(path.s)  
  If Right(path.s,1)<>"\":path.s+"\":EndIf:ProcedureReturn MakeSureDirectoryPathExists_(@path.s)
EndProcedure


Verfasst: 20.05.2007 21:45
von Kaeru Gaman
AND51 hat geschrieben:@ Xaby:
Nett, dein CompilerIf, aber ich würde die Variable doch lieber in die Prozedur packen, statt außerhalb? Also als protected, statt global?!
weder noch.
ich würde eine kompilezeit-bedingung in der erzeugung einer konstanten resultieren lassen, wie sich das gehört.

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  #Seperator$ ="" ; für Windows
CompilerElse
  #Seperator$ ="/" ; für MacOS, Linux
CompilerEndIf

Verfasst: 20.05.2007 21:46
von ts-soft
@String
Auch überflüssig, MakeSureDirectoryExist funktioniert mit oder ohne
abschließendem Backslash korrekt!

Verfasst: 20.05.2007 21:55
von String
Da spuckt MakeSure nicht die Wahrheit aus.

Der Ordner “testA“ Fehlt

Code: Alles auswählen

Procedure CreateTopDirectory2(path.s) 
  ProcedureReturn MakeSureDirectoryPathExists_(@path.s)
EndProcedure 


Debug Str(CreateTopDirectory2("c:\Test\testA")) + " = Test ohne \"


Procedure CreateTopDirectory(path.s) 
  If Right(path.s,1)<>"\":path.s+"\":EndIf:ProcedureReturn MakeSureDirectoryPathExists_(@path.s) 
EndProcedure 


Debug Str(CreateTopDirectory("c:\Test\testB")) + " = Test ohne \"


Verfasst: 20.05.2007 22:03
von ts-soft
tschuldige, hast Recht!

Aber trotzdem Unnütz :mrgreen:

Normallerweise habe ich einen Pfad einschl. Datei. nutze
MakeSureDirectoryExists also mit GetPathPart, wo das Backslash immer da
ist. Ohne Datei wäre das erstellen des Ordnerpfades ja sinnlos

Verfasst: 20.05.2007 22:15
von Kaeru Gaman
nunja... aber ein Installer erzeugt erst den pfad, und kopiert dann die dateien hinein resp. entpackt das archiv.

und witziger weise sind die pfadangaben im auswahlfenster des requesters der meisten installer ohne den abschließenden backslash.

was passiert denn, wenn old MakeSure eine pfadangabe mit doppeltem backslash am ende bekommt?
wenn das ohne meckern funzt, dann könnte man grundsätzlich einen anhängen, egal wie der pfad vorher aussieht...

Verfasst: 20.05.2007 22:18
von String
Genau darauf wollte ich auch grade hinaus.
Warst schneller.
Und daher bevorzuge ich doch lieber meine Variante
Die sich unter anderem auch durch die voran gestellten Beiträgen ergeben hat.

Verfasst: 20.05.2007 22:28
von ts-soft
Der Installer erzeugt erst den Pfad, korrekt.

Code: Alles auswählen

file.s = "c:\test\testa\blub.txt"
MakeSureDirectoryPathExists_(GetPathPart(file))
CopyFile(bla, file)
Wer natürlich dem User erlaubt den Pfad per Hand einzutragen, der muß
schon eine Menge Aufwand betreiben um die Korrektheit des Pfades zu
prüfen. Da genügt keiner der hier geposteten Codes :mrgreen:

Verfasst: 20.05.2007 22:31
von String
Alles für die Sicherheit.
Und wer 3 Backslash eingibt
Sollte den Computer verkaufen.

Code: Alles auswählen

Procedure CreateTopDirectory(path.s)  
  path.s = ReplaceString(path.s,"\\","\"):If Right(path.s,1)<>"\":path.s+"\":EndIf
Debug path.s
  ProcedureReturn MakeSureDirectoryPathExists_(@path.s)
EndProcedure

Wer natürlich dem User erlaubt den Pfad per Hand einzutragen,
So etwas soll vorkommen

Verfasst: 20.05.2007 22:35
von String
Alles für die Sicherheit.
Und wer 3 Backslash eingibt
Sollte den Computer verkaufen.

Code: Alles auswählen

Procedure CreateTopDirectory(path.s)  
  path.s = ReplaceString(path.s,"\\","\"):If Right(path.s,1)<>"\":path.s+"\":EndIf
Debug path.s
  ProcedureReturn MakeSureDirectoryPathExists_(@path.s)
EndProcedure

Debug CreateTopDirectory("c:\Test\testD")
Debug CreateTopDirectory("c:\Test\testE\")
Debug CreateTopDirectory("c:\Test\testF\\")

Wer natürlich dem User erlaubt den Pfad per Hand einzutragen,
So etwas soll vorkommen