Thema: Delphi Application Path

Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#26

Zusammenfassung

  Alt 8. Okt 2013, 05:30
Da bei einigen offenbar rege Begriffsverwirrung herrscht, möchte ich das bisher Gesagte noch einmal zusammenfassen:

Das Anwendungsverzeichnis ändert sich nicht, während das Programm läuft:
Delphi-Quellcode:
Anwendungsverzeichnis := SysUtils.ExtractFilePath(System.ParamStr(0));
Anwendungsverzeichnis := SysUtils.ExtractFilePath(Forms.Application.ExeName);
Das Arbeitsverzeichnis kann sich während des Programmlaufs jedoch ändern, z.B. durch einen Aufruf von OpenDialg oder SaveDialog:
Delphi-Quellcode:

Arbeitsverzeichnis := SysUtils.GetCurrentDir;
Wenn ich im Programm ein festes Verzeichnis benötige, das sich nicht ändern soll, dann lege ich dieses Verzeichnsi beim Programmstart fest, z.B. den Ort, an dem die benötigte Firebird-Datenbank zu finden ist:
Delphi-Quellcode:
Const
  DB_Datei = 'MeineDatenbank.FDB';
Var
  DB_DateiName,
  DB_DateiPfad : String;
Diesen Speicherort ermittle ich entweder durch einen OpenDialog oder lege ihn in einer Ini-Datei fest (das kann auch ein einfaches Ascii-File mit nur einer Zeile sein). Diese Ini-Datei speichere ich nur dann im Anwendungsverzeichnis, wenn

1. sie nicht vom Programm verändert zurückgeschrieben werden soll und/oder
2. es sich um eine portable Anwendung handelt, die sich nicht in einem der Windows-Systemordner befindet.

Ansonsten speichert man Ini-Dateien (und andere, die man benötigt) im Benutzer-Verzeichns, und zwar bei:

WinXP entweder unter \AllUsers\Anwendungsdaten oder \[CurrentUser]\Anwendungsdaten
Win7 entweder unter \Users\Public\Documents\MeineAnwendungsDaten\ oder entsprechend unter \Users\[CurrentUser]\
Win 8 weiß ich nicht, hab ich nicht ...

Oder man setzt entsprechende Registry-Einträge und erfährt dann aus der Registry alle notwendigen festen Verzeichnisse.
  Mit Zitat antworten Zitat