Die meisten von Euch kennen vermutlich die die Methode
MyFileName := Application.ExeName
mit welcher Ihr den Namen der aktuellen EXE oder DLL abfragen könnt. Soweit so gut. Der Haken dabei ist, dass dies bei Diensten, Control-Panel-Apps noch bei Web-Apps funktioniert, da diese "Application's" besagte Methode nicht haben. Eine Methode (aus den frühen Pascal-Zeiten), welche immer funktioniert ist das Kommando:
MyFileName := ParamStr(0);
Richtig! Es handelt sich um den 0-ten Kommandozeilenparameter. Windows macht das so, das dies der eigene Name ist. Wenn Ihr also in jedem Fall den Pfad zu Eurem Programm zur Laufzeit ermitteln wollte, geht das beispielsweise so:
to get the filename (incl. path) to the current executable (exe or dll). Well, this is ok but doesn't work for things like service-apps, controlpanel-apps, web-apps, etc. as the application object of thouse doesn't have the ExecName property. A function which works in every case is
MyFileName := ParamStr(0);
You're right! It's the command line parameter number zero. This is the way Windows does it. If you'd like to get the path to your program at runtime your can do something like: