Programm-Verzeichnis ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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")
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag 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
Benutzeravatar
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

Beitrag von ts-soft »

? :?:
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.
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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
Bild
Antworten