Seite 1 von 1
Aktueller exe Pfad
Verfasst: 24.12.2010 09:49
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!!!!
Re: Aktueller exe Pfad
Verfasst: 24.12.2010 09:59
von Waldixxl
Hallo Velindos
Versuche es mal mit ProgramFilename()
Frohe Weihnacht
Walter
Re: Aktueller exe Pfad
Verfasst: 24.12.2010 10:16
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
Re: Aktueller exe Pfad
Verfasst: 05.01.2011 16:36
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
Re: Aktueller exe Pfad
Verfasst: 05.01.2011 16:42
von ts-soft
@Velindos
Die verwendete API ist doch unnötig, PB kennt doch GetPathPart()

Re: Aktueller exe Pfad
Verfasst: 26.01.2011 09:25
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
Re: Aktueller exe Pfad
Verfasst: 26.01.2011 09:43
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$
Re: Aktueller exe Pfad
Verfasst: 26.01.2011 09:57
von Velindos
Hallo,
wusste ich nicht, werde es gleich einbauen!
Danke für deine RAT!
Gruss ... Velindos
Re: Aktueller exe Pfad
Verfasst: 26.01.2011 10:01
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.