Programm Verzeichniss herausfinden

Anfängerfragen zum Programmieren mit PureBasic.
Kreisman
Beiträge: 9
Registriert: 07.07.2005 10:36

Programm Verzeichniss herausfinden

Beitrag von Kreisman »

Wie finde ich das Verzeichniss raus in dem meine Exe ist?
Geht das überhaupt?
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 »

Versuche es mal mit der Boardsuche, die Frage wurde schon öfter gestellt :wink:
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
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Jup, das geht :)

Code: Alles auswählen

Procedure.s ExePath()
  CompilerIf #exe=1
      ExePath2.s = Space(1000)
      GetModuleFileName_(0,@ExePath2,1000)
  CompilerElse
        ExePath2.s=""
  CompilerEndIf
  ProcedureReturn GetPathPart(ExePath2.s)
EndProcedure 
bei den "" musst du, solange du dein Programm nicht für den Fertigen gebrauch compilierst den Passenden Pfad halt angeben, da es ja im PB-Compilerordner liegt. Solange muss #exe dann auch 0 sein.
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
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 »

Geht auch ohne wenn und aber :wink:

Code: Alles auswählen

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
  If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
  ProcedureReturn Prg
EndProcedure
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
Kreisman
Beiträge: 9
Registriert: 07.07.2005 10:36

Beitrag von Kreisman »

danke :D
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

moin, moin...

Und warum reicht nicht einfach sowas ?

Code: Alles auswählen

getprogdir: 
;{
  buffer.s = Space(1000)
  GetCurrentDirectory_(1000,@buffer)
  progdir$ = buffer

  startprefs$ = progdir$ + "\prefs\last.prefs"
  Debug startprefs$
;}
Return ;getprogdir
tia...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

hallo!

wofür steht die Konstante #MAX_PATH ?
Wie viele Zeichen ein Pfad (OS abhänhig) maximal haben kann?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

scholly hat geschrieben:Und warum reicht nicht einfach sowas ?
weil die current in einem mutitasking-system von einem anderen task verändert werden kann... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Kaeru Gaman hat geschrieben:
Und warum reicht nicht einfach sowas ?
weil die current in einem mutitasking-system von einem anderen task verändert werden kann... ;)
Äh... aber das benutzt TS-soft in seinem code doch auch :roll:

bis denne...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
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 »

ja, aber nur wenn die Exe in der IDE ausgeführt wird, weil dann der PBCompiler CurrentDirectory auf den gesuchten Pfad setzt. Das Compilers-Verzeichnis, wo sich die Exe in diesem Fall ja befindet wird im allgemeinen nicht gebraucht :mrgreen:

#MAX_PATH sind 260

In diesem Fall sollte man es evtl. erhöhen, da Pfad + Filename grösser sein könnten.
Unter Windows wären vieleicht 1024 sinnvoll, unter Linux doppelt soviel
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
Antworten