Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einstellungsdatei-relative Pfade, wie? (https://www.delphipraxis.net/13418-einstellungsdatei-relative-pfade-wie.html)

chris_82 18. Dez 2003 00:25


Einstellungsdatei-relative Pfade, wie?
 
Wie bringe ich mein Programm dazu, dass es eine Datei, immer in dem Ordner speichert (bzw einen seiner unterordner), aus dem die exe aufgerufen wird?

Christian Seehase 18. Dez 2003 00:30

Re: Einstellungsdatei-relative Pfade, wie?
 
Moin Chris,

wo liegt jetzt das Problem:
Beim Speichern, oder beim Ermitteln des Pfades?
In letzterem Falle such' hier doch mal nach Hier im Forum suchenparamstr(0) und/oder Hier im Forum suchenExtractFilePath.

chris_82 18. Dez 2003 00:37

Re: Einstellungsdatei-relative Pfade, wie?
 
in beidem :oops:

Ich habe eine Exe, beim Beenden werden gewisse einstellungen in eine datei geschrieben. Beim laden sollen diese wieder aus dieser datei geladen werden.

Es reicht mir im Prinzip, wenn die Datei mit den Einstellungen in dem selben Verzeichnis wie die Exe liegt.

MikeS 18. Dez 2003 05:51

Re: Einstellungsdatei-relative Pfade, wie?
 
Moin

wenn du keine Angaben machst dann sucht dein Programm sowieso in dem gleichen Pfad wie dein Exe-File liegt!
Solltest du vorher schon mit den pfaden rumspielen und rumspringen, dann kannst du mit
...
Code:
var pfad := string;
Code:
begin
Code:
pfad := ExtractFilePath(Application.ExeName)
...

den aktuellen Pfad deiner Anwendung herausfinden!

negaH 18. Dez 2003 06:18

Re: Einstellungsdatei-relative Pfade, wie?
 
Angenommen eine .INI Datei

Delphi-Quellcode:
with TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')) do
try
finally
  Free;
end;
Dies Ini hat den gleichen Name und Pfad wie die EXE.

Wills du andere Dateinamen angeben mit Subpfaden dann so

Delphi-Quellcode:
with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config\Config.ini')) do
try
finally
  Free;
end;
Gruß Hagen

DevStar 19. Dez 2003 14:41

Re: Einstellungsdatei-relative Pfade, wie?
 
Zitat:

Zitat von MikeS
wenn du keine Angaben machst dann sucht dein Programm sowieso in dem gleichen Pfad wie dein Exe-File liegt!

Das ist so falsch.
Das Programm sucht im aktuellen Verzeichnis. Da Windows ein Multithreading System ist, kann mittlerweile aber eine andere Anwendung diesen Pfad geändert haben.
Man sollte nie relative Pfadangaben verwenden.

MfG
DevStar

Christian Seehase 19. Dez 2003 15:00

Re: Einstellungsdatei-relative Pfade, wie?
 
Moin DevStar,

Zitat:

Zitat von DevStar
Man sollte nie relative Pfadangaben verwenden.

Ja, das seh' ich auch so.

Zitat:

Zitat von DevStar
Da Windows ein Multithreading System ist, kann mittlerweile aber eine andere Anwendung diesen Pfad geändert haben.

Nur die eigene Anwendung kann das Arbeitsverzeichnis bei laufendem Programm ändern, dies kann aber, z.B., schon durch die Auswahl einer Datei in einem Open Dialog geschehen.

Allerdings kann das Arbeitsverzeichnis auch schon beim Aufruf, z.B. durch die Eintragung im Link auf die Exe, auf ein anderes Verzeichnis zeigen.

choose 19. Dez 2003 15:01

Re: Einstellungsdatei-relative Pfade, wie?
 
Zitat:

Zitat von DevStar
Da Windows ein Multithreading System ist, kann mittlerweile aber eine andere Anwendung diesen Pfad geändert haben.

Hallo DevStar. Das hat nichts mit der Fähigkeit des OS, gleichzeitg mehrere Prozesse oder Threads verwalten zu können, zu tun. Anders als Unix/Linux hält Windows für jeden Prozess mehrere "Aktuelle Verzeichnisse" (nämlich pro Laufwerk eins) und kann diese unabhängig voneinander verwalten. Darüber hinaus wird ein Prozess mit einer Vorbelegung für das sog. "Arbeitsverzeichnis" gestartet. Unterschiedliche Werte beim Start eines Prozesses kommen dadurch zustande, dass Programm aus anderen Ordnern gestartet werden können
Code:
choose@choice> SubFolder\MyProgram.exe ..\MyFile.txt
bzw beim "Klick" auf Icons mitunter merkwüdige (häufig aber der Ordner der Ikone) Verzeichnisse gewählt werden. Mit einem Rechtsklick und "Eigenschaften" kann das Arbeitsverzeichnis eines durch eine Verknüpfung referenzierten Programms festgelegt werden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 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