Hallo Leute!
In Ausnahmefällen kann das aber auch schiefgehen: Wenn nämlich das Programm über eine Verknüpfung oder ein anderes Programm gestartet wird und dabei explizit ein bestimmtes Arbeitsverzeichnis vorgegeben ist...
Um ganz sicher zu gehen, verwende ich diese Routine (neulich schonmal in der Mailingliste gepostet):
'**********************************************************
def GetSlash(1) sub(len($(1)),len(translate$($(1),"\","")))
'-----------------------Slashes zählen
def DelRight(2) del$($(1),len($(1))-%(2)+1,%(2))
'-----------------------n Zeichen von rechts in $ löschen
declare Pfad$,ParMode%,a%
if %parcount'------------------------Kommandozeilenparameter vorhanden?
a%=len(substr$(par$(0),GetSlash(par$(0))+1,"\"))
Pfad$=DelRight(par$(0),a%)
ParMode%=1'-------------------------Flag für Kommandozeilenparameter
ifnot (right$(lower$(Par$(1)),4)=".exe") '--keine EXE?
ParMode%=0'-------------Parameter ist prc oder prf >> ignorieren!
a%=len(substr$(par$(1),GetSlash(par$(1))+1,"\"))
Pfad$=DelRight(par$(1),a%)
endif
else
a%=len(substr$(par$(0),GetSlash(par$(0))+1,"\"))'-EXE ohne Parameter
Pfad$=DelRight(par$(0),a%)
ParMode%=0
endif
print Pfad$
if ParMode%
print "Übertragener Kommandozeilenparameter :"
print par$(1)
endif
waitkey
'**********************************************************
Diese Routine sollte in jeder Betriebsart laufen, ohne daß man irgendwas
umstellen muß. Die Kommandozeilenparameter-Kennung bei exe's (Variable
ParMode%) kann bei nicht-Bedarf weggelassen werden.
Und die definierten Funktionen kann man in Verbindung mit Pfaden immer
mal wieder gebrauchen ;-)
HTH
Pascal
|