Immer und überall und mit allen Programm etc? Das kann sehr schnell zu Fehlern führen, den man anschließend Ewigkeiten sucht. Sowas macht imo halt den Unterschied zwischen einen guten und einen schlechten Programm aus.NeoChris hat geschrieben:Windows kommt auch mit / gut klar
GetProgramDataDirectory()
Re: GetProgramDataDirectory()
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
- 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: GetProgramDataDirectory()
In manchen Situationen, aber nicht in allen!NeoChris hat geschrieben:Windows kommt auch mit / gut klar
Einfaches Beispiel aus der Hilfe:
Code: Alles auswählen
InitialPath$ = "C:\" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Path$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath$)
If Path$
MessageRequester("Information", "Sie haben folgenden Pfad ausgewählt:"+Chr(10)+Path$, 0)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
InitialPath$ = "C:/" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Path$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath$)
If Path$
MessageRequester("Information", "Sie haben folgenden Pfad ausgewählt:"+Chr(10)+Path$, 0)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
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.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: GetProgramDataDirectory()
Code: Alles auswählen
; #Slash-DefaultPath-BinPath-DataPath.pbi
;
; erkennt SystemDefaultProgramDataDirectory; kann aber auch mit portablen Programmen oder Programmen aus der IDE umgehen (nutzt den SourcePath)
; dadurch ist es universell nutzbar- "Use your path here" ist nicht mehr notwendig
; erkennt "\bin" und nutzt gegebenenfalls "..\data" wenn SystemDefaultProgramDataDirectory nicht verfügbar ist
;
EnableExplicit
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
#Slash = "\"
CompilerDefault
#Slash = "/"
CompilerEndSelect
Procedure.s GetDefaultDataDirectory()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
ProcedureReturn GetEnvironmentVariable("APPDATA") + #Slash
CompilerCase #PB_OS_MacOS
ProcedureReturn GetHomeDirectory() + "Library/Application Support/"
CompilerCase #PB_OS_Linux
ProcedureReturn GetHomeDirectory() +"."
CompilerEndSelect
EndProcedure
Define.s DataPath, DefaultPath=GetDefaultDataDirectory()
Define.s BinPath = DefaultPath+GetFilePart(ProgramFilename(),#PB_FileSystem_NoExtension)
;Define.s BinPath = DefaultPath+"MyDifferentDirectoryName" ; fix, from Preference, ProgramParameter() or whatever
If Bool(Left(GetFilePart(ProgramFilename()), 9) = "PureBasic")
BinPath = GetPathPart(ProgramFilename())
Else
If FileSize(BinPath)=-1
BinPath = GetPathPart(ProgramFilename())
EndIf
EndIf
If Right(BinPath,4)="bin"+#Slash
DataPath = Left(BinPath, Len(BinPath)-4)+"data"+#Slash
CreateDirectory(DataPath)
Else
DataPath = BinPath
EndIf
Code: Alles auswählen
; for testing
;
EnableExplicit
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
#Slash = "\"
CompilerDefault
#Slash = "/"
CompilerEndSelect
Procedure.s GetDefaultDataDirectory()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
ProcedureReturn GetEnvironmentVariable("APPDATA") + #Slash
CompilerCase #PB_OS_MacOS
ProcedureReturn GetHomeDirectory() + "Library/Application Support/"
CompilerCase #PB_OS_Linux
ProcedureReturn GetHomeDirectory() +"."
CompilerEndSelect
EndProcedure
Define.s DataPath, DefaultPath=GetDefaultDataDirectory(), Title
Define.s BinPath = DefaultPath+GetFilePart(ProgramFilename(),#PB_FileSystem_NoExtension)
;Define.s BinPath = DefaultPath+"MyDifferentDirectoryName" ; fix, from Preference, ProgramParameter() or whatever
If Bool(Left(GetFilePart(ProgramFilename()), 9) = "PureBasic")
Title= "from IDE" ; DataPath and BinPath = SourcePath
BinPath = GetPathPart(ProgramFilename())
Else
If FileSize(BinPath)=-1
Title= "portable"
BinPath = GetPathPart(ProgramFilename())
Else
Title="DefaultProgramDataDirectory"
EndIf
EndIf
If Right(BinPath,4)="bin"+#Slash
DataPath = Left(BinPath, Len(BinPath)-4)+"data"+#Slash
CreateDirectory(DataPath)
Else
DataPath = BinPath
EndIf
MessageRequester(Title, "BinPath : "+BinPath+Chr(10)+"DataPath : "+DataPath, #PB_MessageRequester_Ok)