Seite 1 von 3

dateifpad von datei aus ermitteln

Verfasst: 15.05.2007 22:06
von cofter
Hi zusammen,
ich möchte gern den Pfad einer Datei ermitteln den ich nicht kenne bzw. kenn ich nur das Verzeichnis wo die Datei liegt

bekannt ist \meinProgramm\start.exe

wie bekomme ich den rest raus damit ich einen absoluten Pfad bekomme?

hoffe ihr könnte mir auf die sprünge helfen.


mfg

Verfasst: 15.05.2007 22:13
von Fluid Byte
In welcher Situation kriegst du denn nur den "halben" Pfad?

Verfasst: 15.05.2007 22:26
von cofter
Ich weiss in welchen Ordner mein Programm liegt nur weiss ich nicht den kompletten absoluten Pfad weil ich noch eine exe aufrufen muss und runProgram() will ja immer nen absoluten Pfad haben.

Verfasst: 15.05.2007 22:28
von Fluid Byte
Ich weiss in welchen Ordner mein Programm
Woher? Und dann kennst du nicht den ganzen Pfad? Kannst du die .EXE während Laufzeit laden? Dann wäre es einfach.

Verfasst: 15.05.2007 22:29
von ts-soft
Wenn der Pfad relativ zu Deiner Exe ist so:

Code: Alles auswählen

Procedure.s GetExePath()
  Protected Result.s
  If LCase(GetPathPart(ProgramFilename())) = LCase(#PB_Compiler_Home + "Compilers\")
    Result = GetCurrentDirectory()
  Else
    Result = GetPathPart(ProgramFilename())
  EndIf
  If Right(Result, 1) <> "\" : Result + "\" : EndIf
  ProcedureReturn Result
EndProcedure

RunProgram(GetExePath() + "meinProgramm\start.exe")

Verfasst: 15.05.2007 22:51
von cofter
Erstmal danke ts-soft für den Code, leider scheint er bei mir nicht zu funktionieren.

Hier mal mein kompletter Code.

Code: Alles auswählen

Procedure.s GetExePath()
  Protected Result.s
  If LCase(GetPathPart(ProgramFilename())) = LCase(#PB_Compiler_Home + "Compilers\")
    Result = GetCurrentDirectory()
  Else
    Result = GetPathPart(ProgramFilename())
  EndIf
  If Right(Result, 1) <> "\" : Result + "\" : EndIf
  ProcedureReturn Result
EndProcedure

Open_SolaniaUpdater()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #ProgressBar_0
      
    ElseIf GadgetID = #B_launch
      
      ;RunProgram("c:\Solania\Solania_005\Solania.exe")
      RunProgram(GetExePath() + "Solania_005\Solania.exe")
      quit = 1   
    ElseIf GadgetID = #B_quit
      quit = 1
    ElseIf GadgetID = #Web_0
      
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow Or quit = 1 ; End of the event loop

End
;

Verfasst: 16.05.2007 07:32
von DrShrek
cofter hat geschrieben:
;RunProgram("c:\Solania\Solania_005\Solania.exe");
Du weisst doch den Pfad...also warum so umständlich?

Verfasst: 16.05.2007 07:38
von cofter
Das war ein Test ob runProgram() macht was es soll. ;)

Verfasst: 16.05.2007 07:48
von DrShrek
cofter hat geschrieben:Das war ein Test ob runProgram() macht was es soll. ;)
Und Test bestanden?

Verfasst: 16.05.2007 07:52
von cofter
Ja... nur muss ich den absoluten Pfat ermitteln weil ich net weiss wo jemand anders das Programm installiert.