Seite 3 von 3

Verfasst: 02.11.2004 16:19
von Andre
Danilo hat geschrieben:Kannste ja Fred mal sagen, er soll sich nicht so anstellen... ;)
Werde ich dann mal postwendend tun, "mit freundlichen Grüßen von Danilo" sozusagen... :lol: :wink:

[Edit] Habe Fred auf Kurs gebracht, Dank von ihm an Dich :)
(Was er jedoch trotzdem noch überprüfen muss: "I don't know if it will work in every case ..... the app can be in several PATH directories")

Verfasst: 17.10.2005 08:36
von Toshy
Hallo.

Ist ja schon lange her als dieser Beitrag geschrieben wurde.
Wie sieht es aktuell aus mit den Verzeichnisspfaden? in Version 3.94 ist ja auch noch nichts drinn. Weiß du Andre was neues oder jemand anderes? Wie kann man denn nun sicher den Programmpfad und aktuellen Pfad rausbekommen (besonders unter Linux).

Werden die neuen funktionen nun noch in Purebasic eingebaut?

Lieber Gruß
Toshy

Verfasst: 17.10.2005 12:53
von ts-soft
? :?:

Verfasst: 17.10.2005 14:20
von MVXA
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