Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi INI File manchmal nicht im Prog. Verzeichnis (https://www.delphipraxis.net/1103-ini-file-manchmal-nicht-im-prog-verzeichnis.html)

Salomon 18. Okt 2002 09:22


INI File manchmal nicht im Prog. Verzeichnis
 
Hallo,
um die Einstellungen meines Programmes zu speichern benutzte ich eine ini Datei. Im FormClose wird sie mit folgenden Code im Programmverzeichnis gespeichert.

Code:
ini := TInifile.create ('.\relais_controll.ini');
Das Funktioniert soweit auch sehr gut, nur wenn ich einen der Dialoge zum Öffnen oder Speichern einer Datei im Programm benutze, wird die ini Datei nach Beendigung des Programms in dem Verzeichnis gespeichert, wo ich zuletzt mit einem Dialog eine Datei geöffnet oder gespeichert habe.

Hat dafür jemand eine Erklärung?

Mfg
Salomon

Daniel 18. Okt 2002 09:36

Hallo,

ich glaube, dass die Erklärung recht einfach ist:
Du nutzt zum Speichern Deiner INI-Datei eine relative Pfadangabe. ('./'). Der Punkt vor dem Schrägstrich wird dabei durch das jeweils aktuelle Arbeitsverzeichnis Deiner Anwendung ersetzt. Und dieses Arbeitsverzeichnis wiederum wird -wie ja schon von Dir erkannt- z.B. durch Öffnen- und Speichern-Dialoge geändert. Dieses Verhalten kannst Du in den Optionen Deiner Dialoge mittels ("ofNoChangeDir") beeinflussen, aber dieser Hinweis nur der Vollständigkeit halber.

Um den absoluten Pfadnamen zu Deiner EXE-Datei zu erhalten, kannst Du die Variable "Application.EXEName" nutzen. Diese enthält den kompletten Pfad- und Dateinamen zu Deiner Anwendung. Wenn man da jetzt noch mit "ExtractFilePath" lediglich den Pfad rauszieht, hast Du genau das, was Du brauchst.

thomasdrewermann 18. Okt 2002 09:38

Also:
Code:
ini:=tinifile.create(extractfiledir(application.exename)+'\relais_controll.ini');

Salomon 18. Okt 2002 10:26

Ich hatte das mit dem ".\" mal irgendwo gesehen, und bin dann wohl davon ausgegangen das damit immer das Programmverzeichnis angesprochen wird. Ein Irrtum.

Es sah nur irgendwie eleganter aus als "extractfiledir(application.exename)" ;-)

Thanx
Salomon

Christian Seehase 18. Okt 2002 10:54

Moin Salomon,

wobei Du statt Application.Exename auch paramstr(0) nehmen kannst. Beide liefern den Pfad der Anwendung zurück, allerdings steht paramstr(0) auch in einer Konsolenanwendung zur Verfügung, ohne dass die Unit Forms mit eingebunden werden muss, was, je nach Delphi Version, 200 bis 300 Kb spart.

Salomon 18. Okt 2002 11:04

Moin Christian Seehase,

da hast du recht, Paramstr(0) wird für mich später sowiso noch interessant, da man damit ja auch die Parameter auslesen kann, die beim Programmstart übergeben wurden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz