Hallo,
zuerst mal ein Gruß ans Forum, hab schon viel gelesen und gelernt.
Aber jetz muss ich mal eine Frage stellen, ich hoffe jemand weiß Rat:
Ich verwende die SessionProperties zum Speichern verschiedener Einstellungen der Form. Auf der Form befindet sich eine ListBox, deren Inhalt (Items) ich auch über die SessionProperties speichern kann. Das erste Speichern funktioniert, beim nächsten Öffnen der Anwendung werden auch alle Items der Listbox (und alle anderen Einstellungen) geladen.
Lösche ich nun die Listbox und beende die Anwendung, so wird das nicht korrekt in die XML/INI-Datei (egal) übernommen! Beim nächsten Start der Anwendung werden wieder Items geladen, teilweise stimmen Anzahl (count) und Einträge in der XML/INI-Datei nicht überein.
Mache ich etwas falsch? Funktioniert das Speichern der Items nicht, obwohl es angeboten wird? Muss ich 'von Hand' speichern (http://wiki.lazarus.freepascal.org/TXML ... igenschaft" onclick="window.open(this.href);return false;)?
Jochen
TXMLPropStorage / TINIPropStorage
Re: TXMLPropStorage / TINIPropStorage
Sieht nach Bug aus -> ab in den Bugtracker mit Versionsangabe: http://bugs.freepascal.org/view_all_bug_page.php" onclick="window.open(this.href);return false;
Alternativ kannst du einfach die Listbox Inhalte so speichern und laden:
Alternativ kannst du einfach die Listbox Inhalte so speichern und laden:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
if FileExists('/home/theo/testlist.txt') then
ListBox1.Items.LoadFromFile('/home/theo/testlist.txt');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ListBox1.Items.SaveToFile('/home/theo/testlist.txt');
end;
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TXMLPropStorage / TINIPropStorage
Soweit ich weiß, ist dieses Verhalten bisher noch normal (auch wenn es nicht wirklich erwünscht ist). Abhilfe wäre manuelles speichern (auch mit TXML/INIPropStorage). Im Wiki könnte dazu mehr stehen (ich meine, dort hätte ich mal etwas darüber gelesen).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: TXMLPropStorage / TINIPropStorage
Es gibt dafür um es manuell zu machen (auch wenn das in meinen Augen nicht wirklich der Sinn von XMLPropStorage ist) die Befehle:
XMLPropStorage1.Write... und XMLPropStorage1.Read... unter anderem auch mit dem Datentyp TStrings damit könntest du direkt die selbe Datei nutzen und recht leicht die Strings manuell beim beenden speichern.
XMLPropStorage1.Write... und XMLPropStorage1.Read... unter anderem auch mit dem Datentyp TStrings damit könntest du direkt die selbe Datei nutzen und recht leicht die Strings manuell beim beenden speichern.
Johannes
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TXMLPropStorage / TINIPropStorage
Zum manuellen Speichern von Werten ist *PropStorage nicht wirklich geeignet. Einfacher gehts mit TXMLConfig.monta hat geschrieben:Es gibt dafür um es manuell zu machen (auch wenn das in meinen Augen nicht wirklich der Sinn von XMLPropStorage ist) die Befehle:
XMLPropStorage1.Write... und XMLPropStorage1.Read... unter anderem auch mit dem Datentyp TStrings damit könntest du direkt die selbe Datei nutzen und recht leicht die Strings manuell beim beenden speichern.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: TXMLPropStorage / TINIPropStorage
Hab jetzt TXMLConfig genommen, funktioniert wunderbar. Ist halt mehr Tipparbeit, aber egal.
Vielleicht interessant: (auch) TXMLConfig löscht keine nicht mehr vorhanden Einträge. Es werden nur neue hinzu genommen, oder bestehende überschrieben. Ein
vor dem Schreiben der Werte löst das Problem.
Vielen Dank!
Jochen
Vielleicht interessant: (auch) TXMLConfig löscht keine nicht mehr vorhanden Einträge. Es werden nur neue hinzu genommen, oder bestehende überschrieben. Ein
Code: Alles auswählen
XMLConfig1.Clear
Vielen Dank!
Jochen