Aktueller exe Pfad

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Aktueller exe Pfad

Beitrag von Velindos »

Hallo,
wie erhalte ich im PB den aktuellen exe-Pfad meiner Anwendung, sprich wo ich Sie gestartet habe?
Will mein Programm in verschiedene Verzeichnisse speichern und bei Aufruf nur jeweilige(SQL-Datei) DatenDatei verwenden.

Gruss und ein frohes Fest ... Velindos

PS: Du fährst mit dem Auto und hältst eine konstante Geschwindigkeit. Auf deiner linken Seite befindet sich ein Abhang. Auf deiner rechten Seite fährt ein riesiges Feuerwehrauto und hält die gleiche Geschwindigkeit wie du. Vor dir galoppiert ein Schwein, das eindeutig grösser ist als dein Auto und du kannst nicht vorbei. Hinter dir verfolgt dich ein Hubschrauber auf Bodenhöhe. Das Schwein und der Hubschrauber haben exakt deine Geschwindigkeit!
Was unternimmst du, um dieser Situation gefahrlos zu entkommen???


Vom Kinderkarussell absteigen und weniger Glühwein saufen!!!!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Aktueller exe Pfad

Beitrag von Waldixxl »

Hallo Velindos

Versuche es mal mit ProgramFilename()

Frohe Weihnacht
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
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

Re: Aktueller exe Pfad

Beitrag von ts-soft »

oder besser mit: GetPathPart(ProgramFilename())

ACHTUNG: Damit der Pfad auch in der IDE stimmt (weil normalerweise compiliert die IDE im Tempordner),
in den Einstellungen:
Compiler / Standards / Temporäres Executable im Quellcode-Verzeichnis erstellen abhaken.

Frohes Fest
Thomas
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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Aktueller exe Pfad

Beitrag von Velindos »

Hallo,
hier die ganze Geschichte zum Nachlesen!

Code: Alles auswählen

Procedure DatenbasefileSet()
  Aktuell_Pfad$=ProgramFilename()
  PathRemoveFileSpec_(@Aktuell_Pfad$)
  DatabaseFile$= Aktuell_Pfad$+"\"+"Zieldatei.xxx" ; Hier die Zieldatei
  MessageRequester("","Pfad: "+DatabaseFile$,0)
EndProcedure
Findet, schneidet und fügt ein!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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

Re: Aktueller exe Pfad

Beitrag von ts-soft »

@Velindos
Die verwendete API ist doch unnötig, PB kennt doch GetPathPart() :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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Aktueller exe Pfad

Beitrag von Velindos »

Hallo,
habe den Rat befolgt und die Sache auf das umgestellt!

Code: Alles auswählen

  Aktuell_Pfad$=ProgramFilename()
  PathRemoveFileSpec_(@Aktuell_Pfad$)
  DatabaseFile$= Aktuell_Pfad$+"\"+"Zieldatei.xxx" ; Hier die Zieldatei
  MessageRequester("","Pfad: "+DatabaseFile$,0)
  
  Debug DatabaseFile$

  DatabaseFile1$=GetPathPart(Aktuell_Pfad$) 
  DatabaseFile2$=DatabaseFile1$+"Zieldatei.xxx"; Hier die Zieldatei
  MessageRequester("","Pfad: "+DatabaseFile2$,0)

  Debug DatabaseFile1$
  Debug DatabaseFile2$
Nun ganz Funzt die Sache nicht. Den beim Debugen erhält folgende Aussagen:

C:\Users\MEDION\AppData\Local\Temp\Zieldatei.xxx
C:\Users\MEDION\AppData\Local\
C:\Users\MEDION\AppData\Local\Zieldatei.xxx

Plötzlich fehlt \Temp?

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Aktueller exe Pfad

Beitrag von STARGÅTE »

Weil du mit der API PathRemoveFileSpec_(@Aktuell_Pfad$) den Aktuellen Pfad im Speicher änderst!
Damit fehlt für das untere Zeug, das temp schon:

Code: Alles auswählen

  Aktuell_Pfad$=ProgramFilename()
  PathRemoveFileSpec_(@Aktuell_Pfad$)
  DatabaseFile$= Aktuell_Pfad$+"\"+"Zieldatei.xxx" ; Hier die Zieldatei
  MessageRequester("","Pfad: "+DatabaseFile$,0)
  
  Debug DatabaseFile$

  Aktuell_Pfad$=ProgramFilename()
  DatabaseFile1$=GetPathPart(Aktuell_Pfad$) 
  DatabaseFile2$=DatabaseFile1$+"Zieldatei.xxx"; Hier die Zieldatei
  MessageRequester("","Pfad: "+DatabaseFile2$,0)

  Debug DatabaseFile1$
  Debug DatabaseFile2$
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Aktueller exe Pfad

Beitrag von Velindos »

Hallo,
wusste ich nicht, werde es gleich einbauen!

Danke für deine RAT!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Aktueller exe Pfad

Beitrag von STARGÅTE »

Es ist ein Unterschied ob du einer Funktion (Prozedur) eine Variable (String) als Wert übergibst:
Irgendwas(String$)
oder als Adresse (Referenz):
Irgendwas(@String$)

Beim ersten übergibst du eine Kopie, die dann verändert wird, uns ggf. wieder zurück gegeben wird.
Beim zweiten übergibst du die Adresse des Originals, was dann auch verändert wird.
Deswegen wird bei PathRemoveFileSpec_() auch nichts zurück geben. weil es ja direkt verändert wird.
Bei GetPathPart() bekommst du die Kopie sozusagen zurück.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten