XMLPropStorage eigene Werte hinzufügen
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
XMLPropStorage eigene Werte hinzufügen
Hallo!
Ich hoffe, es hat schon einmal jemand mit XMLPropStorage oder einer ähnlichen Komponente gearbeitet. Damit kann man automatisch verschiedene Werte wie z.B. Form.Top speichern und bei Programmstart wiederherstellen. Geht alles ohne Zutun. Nun hab ich aber auf meiner Form auch weitere Variablen, die ich in diesem Designtime-Editor nicht hinzufügen kann. Die muss ich doch da auch irgendwie reinimpfen können. Hat jemand eine Idee wie das geht? Ich nehme an es geht irgendwie mit XMLPropStorage.StoredValues, aber damit komm ich ohne Hilfe nicht klar...
Ich hoffe, es hat schon einmal jemand mit XMLPropStorage oder einer ähnlichen Komponente gearbeitet. Damit kann man automatisch verschiedene Werte wie z.B. Form.Top speichern und bei Programmstart wiederherstellen. Geht alles ohne Zutun. Nun hab ich aber auf meiner Form auch weitere Variablen, die ich in diesem Designtime-Editor nicht hinzufügen kann. Die muss ich doch da auch irgendwie reinimpfen können. Hat jemand eine Idee wie das geht? Ich nehme an es geht irgendwie mit XMLPropStorage.StoredValues, aber damit komm ich ohne Hilfe nicht klar...
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Hm, ich hab grad mal das ganze Lazarus-Verzeichnis nach Dateien durchsucht, die den String "StoredValues" enthalten. Hatte gehofft den Quellcode vom Designtime-Editor für StoredValues zu finden, aber leider Fehlanzeige. Wenn man diesen Quellcode findet und studiert, sollte die Handhabe ja klar werden, aber wieso hab ich den so nicht gefunden? Dachte immer es sind alles Sources dabei? Wo bekomm ich diesen Code her?
Alles, was ich bisher an Info zu TXMLPropStorage finden konnte, ist http://wiki.freepascal.org/TXMLPropStorage" onclick="window.open(this.href);return false;, aber dort steht halt nur, wie man den Designtime-Editor benutzt, den ich ja nicht verwenden kann, weil die zu speichernden Infos erst zur Runtime erzeugt werden...
Alles, was ich bisher an Info zu TXMLPropStorage finden konnte, ist http://wiki.freepascal.org/TXMLPropStorage" onclick="window.open(this.href);return false;, aber dort steht halt nur, wie man den Designtime-Editor benutzt, den ich ja nicht verwenden kann, weil die zu speichernden Infos erst zur Runtime erzeugt werden...
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- 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: XMLPropStorage eigene Werte hinzufügen
Hä?
Rechtsklick auf TXMLPropStorage > Suche Deklaration, dann vielleicht nochmal das selbe mit StoredValues und du landest über die Unit XMLPropStorage in die Unit StoredValues.
Und die liegen beide im Ordner LCL im Lazarusverzeichnis.
Rechtsklick auf TXMLPropStorage > Suche Deklaration, dann vielleicht nochmal das selbe mit StoredValues und du landest über die Unit XMLPropStorage in die Unit StoredValues.
Und die liegen beide im Ordner LCL im Lazarusverzeichnis.
Johannes
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Ich habs herausbekommen: XMLPropStorage.StoredValues ist von TCollection abgeleitet. Zu TCollection hab ich jetzt gefunden, wie man die verwendet (war mir bisher unbekannt). Werd mich da jetzt mal reinfuchsen...
@monta: Das hatt ich schon gefunden, aber einzig daraus wurde ich auch nicht schlau. Was ich gesucht hatte, war die Implementation vom Designtime-Editor von (wie ich jetzt weiß) TCollection, die befindet sich in \ideintf\propedits.pp.
@monta: Das hatt ich schon gefunden, aber einzig daraus wurde ich auch nicht schlau. Was ich gesucht hatte, war die Implementation vom Designtime-Editor von (wie ich jetzt weiß) TCollection, die befindet sich in \ideintf\propedits.pp.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Du musst nur beachten das die Werte in der Komponente also zur Designzeit eingetragen sind. Also alle Werte die du verwenden willst in StoredValues eintragen.
Dann kannst du über StoredValue['MEINWERT'] lesend und schreibend darauf zugreifen. Funktioniert prima.
Dann kannst du über StoredValue['MEINWERT'] lesend und schreibend darauf zugreifen. Funktioniert prima.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Naja, wie gesagt, mir geht´s vor allem drum, zur Runtime neue Werte einzutragen. Sonst wär es kein Problem
Ich hab eine TList, die überschaubare kleine Objekte speichert, und die will ich von XMLPropStorage mit speichern lassen.

Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Dazu ist das ding aber nie gedacht und macht sich auch nicht gerade toll da du dann alle Elemente in einen String quetschen musst und den selbst zusammenfügen und zerlegen. Da nimmst lieber normale DOM XML Files und die fpc xml klassen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Hm, ich dachte mir sowas:
Aber das gibt einen Pointerfehler im weiteren Programmverlauf (nicht in dieser Prozedur).
Code: Alles auswählen
procedure TFMain.XMLPropStorageSavingProperties(Sender: TObject);
var
i, j: Integer;
begin
with TStoredValue(XMLPropStorage.StoredValues.Add) do begin
Name := 'Aktionen';
with TStoredValue(StoredValues.Add) do begin
Name := 'SortedBy';
Value := Aktionen.SortedBy;
end;
with TStoredValue(StoredValues.Add) do begin
Name := 'SortedRev';
Value := booltostr(Aktionen.SortedRev);
end;
for i := 0 to Aktionen.Count-1 do
with TStoredValue(StoredValues.Add) do begin
Name := 'Item'+inttostr(i);
with TStoredValue(StoredValues.Add) do begin
Name := 'Start';
Value := floattostr(Aktionen[i].Start);
end;
with TStoredValue(StoredValues.Add) do begin
Name := 'Ende';
Value := floattostr(Aktionen[i].Ende);
end;
with TStoredValue(StoredValues.Add) do begin
Name := 'Versand';
Value := Aktionen[i].Versand;
end;
with TStoredValue(StoredValues.Add) do begin
Name := 'Thema';
Value := Aktionen[i].Thema;
end;
with TStoredValue(StoredValues.Add) do begin
Name := 'Kommentar';
for j := 0 to Aktionen[i].Kommentar.Count-1 do
with TStoredValue(StoredValues.Add) do begin
Name := 'Item'+inttostr(j);
Value := Aktionen[i].Kommentar[j];
end;
end;
end;
end;
end;
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Gib mir mal einen Kurzeinstieg (oder Links), kenn mich da überhaupt nicht aus.Christian hat geschrieben:Da nimmst lieber normale DOM XML Files und die fpc xml klassen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Aber Google..
http://www.google.de/search?q=freepasca ... ogle-Suche
http://www.google.de/search?q=freepasca ... ogle-Suche
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Damnach ist wohl TXMLDocument die für mich interessante Klasse?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Code: Alles auswählen
Var
S : TStringStream;
XML : TXMLDocument;
begin
S:= TStringStream.Create(MyXMLString);
Try
S.Position:=0;
XML:=Nil;
ReadXMLFile(XML,S); // Komplettes XML-Dokument
// Alternativ:
ReadXMLFragment(AParentNode,S); // Nur das XML-Fragment lesen.
Finally
S.Free;
end;
end;
http://www.thomas-zastrow.de/texte/fpcx ... riting.php
^Url des 2. Links unter Google eingefügt darin wird schön beschrieben wie man schreibt
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: XMLPropStorage eigene Werte hinzufügen
Danke. Ich wollte eigentlich nur sicher gehen, dass ich mich nicht wieder mit der falschen Klasse für meine Aufgabe auseinandersetze.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!