Seite 1 von 2

Programm Verzeichniss herausfinden

Verfasst: 29.11.2005 20:32
von Kreisman
Wie finde ich das Verzeichniss raus in dem meine Exe ist?
Geht das überhaupt?

Verfasst: 29.11.2005 20:37
von ts-soft
Versuche es mal mit der Boardsuche, die Frage wurde schon öfter gestellt :wink:

Verfasst: 29.11.2005 20:38
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.

Verfasst: 29.11.2005 20:40
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

Verfasst: 29.11.2005 21:09
von Kreisman
danke :D

Verfasst: 29.11.2005 22:07
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

Verfasst: 29.11.2005 22:09
von AND51
hallo!

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

Verfasst: 29.11.2005 22:15
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... ;)

Verfasst: 29.11.2005 22:23
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

Verfasst: 29.11.2005 22:26
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