Arbeitsverzeichnis richtig setzen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Epcop
Beiträge: 173
Registriert: Di 29. Mai 2012, 09:36

Arbeitsverzeichnis richtig setzen?

Beitrag von Epcop »

Hallo,

ich bin verwirrt.

Ich setze im OnCreate das Arbeitsverzeichnis:

SetCurrentDir(ExtractFilePath(ParamStr(0)));

Und erwarte, dass in meinen Programm neue Textdateien usw. dann auch in dem Verzeichnis landen, indem die ausführbare Datei ist z.B.:
datei : TSTringlist
[...]
datei.savetoFile('./datei.txt');
[...]

Trotzdem landen Dateien gelegentlich im /Home Verzeichnis. Meistens landen sie in dem Verzeichnis der ausführbaren Datei. Dateien im /Home scheinen zusätzlich zu sein, ich bekomme keinen Datenverlust. Aber ich kann es auch nicht richtig reproduzieren. Es fällt mir nur hin und wieder zufällig auf, dass im Home Verzeichnis Dateien herumliegen, die da nicht hingehören (leere Dateien. Gespeichert wurde richtig im Programmverzeichnis).

Aber warum ist das so??

Wie verhält es sich so? (Theoretisch doch auch im Programmverzeichnis?)

datei.savetoFile('datei.txt');

Oder bei Programm Verknüpfungen? Das sollte ja mit setzen des Arbeitsverzeichnises aber keine Rolle spielen?!
Muss ich das Arbeitsverzeichnis auf jeder Form neu setzen?!

LG
Epcop

Linux

Benutzeravatar
theo
Beiträge: 11399
Registriert: Mo 11. Sep 2006, 19:01

Re: Arbeitsverzeichnis richtig setzen?

Beitrag von theo »

Schwer zu sagen, wenn du es nicht reproduzieren kannst.

Warum nicht einfach mit vollständigem Pfad probieren?

Code: Alles auswählen

SL.SaveToFile(Application.Location+'datei.txt');
Für Konfigurationsdateien auch gerne GetAppConfigDir.
https://www.freepascal.org/docs-html/rt ... igdir.html

Antworten