"Application.ExeName" ist IMHO nur die VCL-Kapselung von "paramstr(0)". Wenn du mal eine Konsolenanwendung ohne Form schreibst, wirst du da nicht drumherum kommen ...

... und das es auch innerhalb der VCL funktioniert, spricht nichts gegen die Verwendung.
"Application.ExeName" sollte eigentlich bekannt sein. Kontrolliere deine Eingabe mal auf Schreibfehler. Was anderes fällt mir dazu nicht ein; oder schau mal, ob du die Form "Forms" benutzt. Wenn nicht, dann wäre das ein Beispiel für ein "Non-VCL"-Programm, um´s mal so zu nennen ...
@Renegade: Gegen globale Variablen ist eigentlich nichts einzuwenden. Manchmal sind sie sogar nützlich. Als Beispiel würde ich da die bekannten Icons in der "taskbar notification area" (TNA) nennen.
Dadurch, dass du die entsprechende "TNotifyIconData"-Variable global deklarierst, kannst du die meisten Eigenschaften von ihr bereits füllen, und der Code verkürzt sich auf die "Shell_NotifyIcon"-Anweisung.
@majolo:
Auch der Weg
Quelltext
1: 2:
| var IniFileName : ExtractFilepath(...); |
wird nicht funktionieren, weil du damit schon eine Funktion von Delphi aufrufst. Es wird dir nichts weiter übrig bleiben, als die Variable z.B. so zu deklarieren:
Quelltext
1: 2:
| var IniFileName : 'Unterverzeichnis\INI.ini'; |
und dann z.B. wie patman vorgeschlagen hat im "OnCreate"-Ereignis der Form den restlichen Pfad davorzusetzen:
Quelltext
1:
| IniFileName := ExtractFilePath(paramstr(0)) + IniFileName; |