Also ich habe meine Funktion so umgeschrieben und Deeems Code eingefügt,
dass ich nun sicher unter Linux und Windows den aktuellen Pfad des Programms
ermitteln kann. Hab das ganze noch bischen lesbarer für mich geschrieben <_<.
Hier der Code:
Code: Alles auswählen
Procedure.s GetAppDir()
DefType.l lngBuffer, lngLen
DefType.s strOut
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
lngBuffer = AllocateMemory(#MAX_PATH + 1)
GetModuleFileName_(#Null, lngBuffer, #MAX_PATH)
strOut = GetPathPart(PeekS(lngBuffer))
If Right(strOut, 1) <> "\": strOut + "\": EndIf
FreeMemory(lngBuffer)
CompilerCase #PB_OS_Linux
lngBuffer = AllocateMemory(2048+1)
lngLen = Readlink_("/proc/" + Str(getpid_()) + "/exe", lngBuffer, 2048)
strOut = GetPathPart(PeekS(lngBuffer, lngLen))
CompilerEndSelect
ProcedureReturn strOut
EndProcedure
Procedure.s GetAppName()
DefType.l lngBuffer
DefType.s strOut
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
lngBuffer = AllocateMemory(#MAX_PATH + 1)
GetModuleFileName_(#Null, lngBuffer, #MAX_PATH)
strOut = GetFilePart(PeekS(lngBuffer))
FreeMemory(lngBuffer)
CompilerCase #PB_OS_Linux
lngBuffer = AllocateMemory(2048+1)
lngLen = Readlink_("/proc/" + Str(getpid_()) + "/exe", lngBuffer, 2048)
strOut = GetFilePart(PeekS(lngBuffer, lngLen))
CompilerEndSelect
ProcedureReturn strOut
EndProcedure