Ich verwende TXMLPropStorage, um Programmeinstellungen abzuspeichern. Default speichert das die Einstellungen bei Linux und bei Windows im Programmordner, was spätestens unter Win7 nicht mehr geht.
Empfohlen wird die Speicherung im Benutzerverzeichnis unter AppData/.myApp unter Windows bzw. home/user/.myApp unter Linux. Dafür gibt es nun GetAppConfigDir, welches diese Pfade zurückgeben sollte.
Aber wie bekomme ich das TXMLPropStorage dazu, das AppConfigDir zu benutzen? Darüber schweigt sich die Hilfe (http://wiki.freepascal.org/TXMLPropStorage/de) leider aus.
Ein Workaround unter Linux wäre wohl, als Filename ~/.myApp/myApp.xml anzugeben, aber das geht unter Windows nicht.
TXMLPropStorage mit GetAppConfigDir nutzen
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: TXMLPropStorage mit GetAppConfigDir nutzen
GetAppConfigFile(false) speichert in einer Datei <project>.cfg im c:\users\<username>\AppData\Local\<project>, und das ist m.E. der offizielle Speicherort, die Punkt-Ordner (.<project>) sind unter Windows nicht üblich.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: TXMLPropStorage mit GetAppConfigDir nutzen
Du setzt im Objektinspektor die Eigenschaft Active auf False und machst einfach das:
Eine Prüfung ob das AppConfigDir existiert wird vor dem Schließen empfohlen. Andernfalls kann es zu einer unschönen Exception kommen.
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
XMLPropStorage1.FileName := GetAppConfigDir(False) + 'text.xml';
XMLPropStorage1.Active := True;
end;
Eine Prüfung ob das AppConfigDir existiert wird vor dem Schließen empfohlen. Andernfalls kann es zu einer unschönen Exception kommen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: TXMLPropStorage mit GetAppConfigDir nutzen
m.fuchs hat geschrieben:Du setzt im Objektinspektor die Eigenschaft Active auf False und machst einfach das:
Einfach, soso. Ja, ist einfach, wenn man weiss wie es geht.
Danke.
m.fuchs hat geschrieben:Eine Prüfung ob das AppConfigDir existiert wird vor dem Schließen empfohlen. Andernfalls kann es zu einer unschönen Exception kommen.
Hatte ich schon. Gib mal Windows "/" im Pfad.
Muss ich auch noch Compiler-IFs setzen...
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: TXMLPropStorage mit GetAppConfigDir nutzen
Timm Thaler hat geschrieben:Hatte ich schon. Gib mal Windows "/" im Pfad.
Muss ich auch noch Compiler-IFs setzen...
Wozu? GetAppConfigDir fummelt doch schon den richtigen Trenner dazwischen. Wenn du allerdings irgendwo selber noch einen reinsetzen willst, kannst du dir die IFDEF sparen. Die Konstante DirectorySeparator enthält immer den richtigen Trenner für die Verzeichnisse.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de