XMLPropStorage Speichern im Benutzerverzeichnis

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6945
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

XMLPropStorage Speichern im Benutzerverzeichnis

Beitrag von af0815 »

Vorweg, ja ich kenne die Wiki zu XMLPropStorageund habe zu dem Thema auch die Tante Google befragt.

Vorgeschichte:
Per Definition speichert der Vorgabehandler unter Windows die Datei mit Programmname.xml im Programmverzeichnis (%PROGRAMMFILES%/MeinProgramm) ab und das ist das was ich nicht haben will. Sondern es sollte im %Appdata%/MeinProgramm landen, wird ja normalerweise über die Funktion GetAppConfigDir (+ein wenig Logik) erreicht. OK, soweit so gut.

Frage:
Wie bekomme ich den XMLPropStorage dazu GetAppConfigDir zu verwenden, besonders im Hauptformular. Wo ist der richtige Zeitpunkt ? OnCreate der Hauptformulars ? Oder kann ich einen Macro im Objektinspector verwenden.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2849
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: XMLPropStorage Speichern im Benutzerverzeichnis

Beitrag von m.fuchs »

OnCreate ist da nicht verkehrt. Nach dem Setzen des FileName musst doch noch die Methode Restore aufrufen.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  XMLPropStorage1.FileName := GetAppConfigDirUTF8(False, True);
  XMLPropStorage1.Restore;
end;
0118999881999119725-3

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6945
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: XMLPropStorage Speichern im Benutzerverzeichnis

Beitrag von af0815 »

Danke, das Restore war der missing Link.

Für den Dateinamen habe ich LazFileUtils.GetAppConfigFileUTF8(False, False, True) genommen.

Schaut jetz bei mir so aus

Code: Alles auswählen

 
procedure TFormXXX.FormCreate(Sender: TObject);
var 
  AppDirCfgName : String;
begin
  ......
  AppDirCfgName := LazFileUtils.GetAppConfigFileUTF8(False, False, True); // GetAppConfigFileUTF8(Global; SubDir; CreateDir)
  XMLPropStorage.FileName := AppDirCfgName;
  XMLPropStorage.Restore;
....
 
Dann landen die Daten in Windows unter Benutzer/AppData/Local/Programmname/Programmname.cfg ! Paaasst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten