dateifpad von datei aus ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
cofter
Beiträge: 84
Registriert: 10.03.2006 19:07
Wohnort: Berlin
Kontaktdaten:

dateifpad von datei aus ermitteln

Beitrag 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
Was ich nicht kenne das mach ich kaputt! :D
----------------------------------------------------
Purebasic v4.0
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

In welcher Situation kriegst du denn nur den "halben" Pfad?
Windows 10 Pro, 64-Bit / Outtakes | Derek
cofter
Beiträge: 84
Registriert: 10.03.2006 19:07
Wohnort: Berlin
Kontaktdaten:

Beitrag 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.
Was ich nicht kenne das mach ich kaputt! :D
----------------------------------------------------
Purebasic v4.0
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Zuletzt geändert von Fluid Byte am 15.05.2007 22:29, insgesamt 1-mal geändert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
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 »

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")
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
cofter
Beiträge: 84
Registriert: 10.03.2006 19:07
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
;
Was ich nicht kenne das mach ich kaputt! :D
----------------------------------------------------
Purebasic v4.0
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

cofter hat geschrieben:
;RunProgram("c:\Solania\Solania_005\Solania.exe");
Du weisst doch den Pfad...also warum so umständlich?
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
cofter
Beiträge: 84
Registriert: 10.03.2006 19:07
Wohnort: Berlin
Kontaktdaten:

Beitrag von cofter »

Das war ein Test ob runProgram() macht was es soll. ;)
Was ich nicht kenne das mach ich kaputt! :D
----------------------------------------------------
Purebasic v4.0
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

cofter hat geschrieben:Das war ein Test ob runProgram() macht was es soll. ;)
Und Test bestanden?
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
cofter
Beiträge: 84
Registriert: 10.03.2006 19:07
Wohnort: Berlin
Kontaktdaten:

Beitrag von cofter »

Ja... nur muss ich den absoluten Pfat ermitteln weil ich net weiss wo jemand anders das Programm installiert.
Was ich nicht kenne das mach ich kaputt! :D
----------------------------------------------------
Purebasic v4.0
Antworten