Ich möchte für ein Projekt 2 Einstellungsdateien speichern, die beim nächsten Programmstart noch da sind.
Gibt es dafür einen bestimmten Windows-übergreifenden (also egal ob 2000 oder 7) Standard-Pfad?
Und wie findet man den heraus?
Ich kenne unter Win 7 nur C:\Windows\Users\Name\Appdata\Local\ , oder ist das nicht dafür gedacht?
Ich kann deine Frage leider nicht beantworten, aber ich würde es einfach in der Registry,
oder einfach in dem Pfad in dem das programm liegt, z.B.
C:\Programme\mein prog\bla.exe
=
C:\Programme\mein prog\bla.txt
Danke schonmal für eure Antworten it´s not a bug, it´s a feature!
felix96 hat geschrieben:Ich kann deine Frage leider nicht beantworten, aber ich würde es einfach in der Registry,
oder einfach in dem Pfad in dem das programm liegt, z.B.
C:\Programme\mein prog\bla.exe
=
C:\Programme\mein prog\bla.txt
Keine gute Idee für neue Programme, man sollte die Version von Theo nehmen, weil da die Grundlegenden Eigenschaften der Benutzerrechte unter den verschiedenen Systemen berücksichtigt werden. Unter Windows wird der Programmeordner als R/O betrachtet.fällt den meisten nicht auf, weil als Admin gefahren wird. Spätestens bei W7 sind dann Unerklärliche Erscheinungen vorprogrammiert (wieso geht das speichern bei mir nicht).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Falls du mit einer Datei auskommen könntest, kannst du dir direkt einen Dateinamen mit Pfad generieren mit:
GetAppConfigFile(true oder false)
ausprobieren kannst du es mit:
showmessage(GetAppConfigFile(false));
showmessage(GetAppConfigFile(true));
unter windows XP liefert das:
false: - C:\Dokumente und Einstellungen\<username>\Lokale Einstellungen\Anwendungsdaten\<anwendungsname>.cfg
true: - C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\<anwendungsname>.cfg
unter Linux:
false: - /<userhome>/.config/<anwendungsname>.cfg
true: - /etc/<anwendungsname>.cfg
Es gibt eine Unit inifiles, mit der man solche Einstellungs-Dateien verwalten kann und hierbei Daten unterschiedlicher Variablentypen schreiben kann. Das ist plattformübergreifend, aber bei nur zwei Werten schießt man wahrscheinlich mit Kanonen auf Spatzen.
Martin V hat geschrieben:aber bei nur zwei Werten schießt man wahrscheinlich mit Kanonen auf Spatzen.
Aber ein TIniFile-Objekt erzeugt bei weitem weniger Programmierfehler, als wenn man jetzt extra mit AssignFile etc. anfängt, eine zweizeilige Datei zu lesen und zu schreiben. Also ist eher andersrum der Overkill.
carli hat geschrieben:
Aber ein TIniFile-Objekt erzeugt bei weitem weniger Programmierfehler, als wenn man jetzt extra mit AssignFile etc. anfängt, eine zweizeilige Datei zu lesen und zu schreiben.
Du hast recht!
Noch schlanker geht es mit TStringList und Name=Value pairs.