JSON in BB 2009
-
Hei,
ich muss in meinem Projekt Objekte in Dateien speichern und ich dachte mir, da gäbe es doch nichts besseres als JSON. Jedoch, so entnehme ich aus dem Beitrag( http://www.c-plusplus.net/forum/272940?highlight=json), dass es diese API in Borland Builder 2009 noch nicht gibt.
Habe ich dennoch eine Chance das zum laufen zu bekommen, oder hat jmd eine andere Idee, wie ich C++-Objekte ganz einfach in Textform kippen kann und daher auch wiederherstellen?
Danke für eure Hilfe!
-
kanedo schrieb:
ich muss in meinem Projekt Objekte in Dateien speichern und ich dachte mir, da gäbe es doch nichts besseres als JSON.
Geht so. JSON ist recht eingeschränkt für viele Zwecke, es erlaubt z.B. keine Querverweise zwischen Objekten.
kanedo schrieb:
Jedoch, so entnehme ich aus dem Beitrag( http://www.c-plusplus.net/forum/272940?highlight=json), dass es diese API in Borland Builder 2009 noch nicht gibt.
Bonuspunkt dafür, daß du zuerst recherchierst und dann fragst
kanedo schrieb:
Habe ich dennoch eine Chance das zum laufen zu bekommen, oder hat jmd eine andere Idee, wie ich C++-Objekte ganz einfach in Textform kippen kann und daher auch wiederherstellen?
JSON wird etwas aufwendiger, aber es geht auch ganz einfach mit dem Streaming-Mechanismus der VCL, also mit TStream::ReadComponent()/WriteComponent(). Du mußt deine zu serialisierenden Objekte dann von TComponent ableiten und in der __published-Sektion die Properties angeben, die serialisiert werden sollen, genau wie auch sonst bei Komponenten. Wenn du Arrays serialisieren willst, empfiehlt sich die Verwendung von Collections (für Strings tut es eine TStringList).
-
Hei danke für deine Antwort.
Im Beispielcode (http://docwiki.embarcadero.com/CodeExamples/en/ComponentToString_(C%2B%2B)) wird die Klasse aber nicht von TComponent abgeleitet, oder sehe ich das falsch. Außerdem, so scheint es, haben die das hier komplett selbst umgesetzt oder?
Gibt es irgendwo beispiele?
-
kanedo schrieb:
Im Beispielcode (http://docwiki.embarcadero.com/CodeExamples/en/ComponentToString_(C%2B%2B)) wird die Klasse aber nicht von TComponent abgeleitet, oder sehe ich das falsch.
Indirekt. TScrollBar erbt von TComponent.
kanedo schrieb:
Außerdem, so scheint es, haben die das hier komplett selbst umgesetzt oder?
Was soll das heißen?
kanedo schrieb:
Gibt es irgendwo beispiele?
Na, du hast doch schon eins gefunden.
-
kanedo schrieb:
Außerdem, so scheint es, haben die das hier komplett selbst umgesetzt oder?
Lass dich von dem vielen Quelltext nicht verrückt machen, das ist u.A. nur, weil der String der serialisierten Komponente in ein Textfeld ausgegeben wird.
Die interessante Zeile (ca. Zeile 32, wenn ich mich nicht verzählt habe) ist einzig und allein:pms->WriteComponent(c);
mfg
xXx