Weil relative Pfade relativ zum Arbeitsverzeichnis sind, welches nicht unbedingt das Verzeichnis sein muss, in dem die Exe liegt. Deshalb realtive Pfade dynamisch als vollständige absolute Pfade zusammensetzen
Und gerade ein Service hat als Arbeitsverzeichnis nicht das Anwendungsverzeichnis
Ich würde auf
Application.Exename
verzichten und dafür
ParamStr( 0 )
verwenden. Für den Zugriff auf
Application
benötigt man die
Unit Forms und die hat gerade in einer Service-Anwendung nun gar nichts verloren
Weiterhin würde ich generell in das Programmverzeichnis nicht schreibend zugreifen (Ausnahme bei der Installation). Abgesehen davon, dass das meistens eh nicht geht (fehlende Rechte) finde ich es als äusserst störend bei einer Deinstallation noch Dateileichen vorzufinden, weil der Uninstaller per Default dass Programmverzeichnis nur dann löscht, wenn es leer ist.
Es gibt schließlich genug Verzeichnisse, die dafür vorgesehen sind und wo ich auch weiß, aha, Programm ist weg, will ich nicht mehr, dann können die Daten auch weg.