Objekte serialisieren
Objekte serialisieren
Hallo Forum,
ich bin Student und befinde mich gerade seit knapp 3 Wochen im 2. Praxissemester.
Habe nun die Aufgabe bekommen meine Objekte portierbar zu machen.
Vorgefertigte Funktionen habe ich leider nicht gefunden.
Gibt es in Qt keine oder bin ich unfähig diese zu finden?
Kennt jmd. vielleicht einen Weg um dieses Problem zu lösen.
Ich benutze Qt 3.3.4
Bin für jede Antwort dankbar
MfG Daniellus
ich bin Student und befinde mich gerade seit knapp 3 Wochen im 2. Praxissemester.
Habe nun die Aufgabe bekommen meine Objekte portierbar zu machen.
Vorgefertigte Funktionen habe ich leider nicht gefunden.
Gibt es in Qt keine oder bin ich unfähig diese zu finden?
Kennt jmd. vielleicht einen Weg um dieses Problem zu lösen.
Ich benutze Qt 3.3.4
Bin für jede Antwort dankbar
MfG Daniellus
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ja, mit portierbar ist genau das gemeint, was Java's "Serializable" tut.
QDataStream habe ich schon probiert ( label ist mein Objekt ):
QByteArray bytearray;
bytearray.setRawData(label, sizeof(label));
QDataStream datastream(bytearray, IO_WriteOnly);
setRawData() verlangt laut compiler ein const char* und kein Objekt.
In der Doku steht folgendes zu setRawData():
QMemArray<type> & QMemArray::setRawData ( const type * data, uint size )
Ich kann allerdings dieses <type> und const type* nicht interpretieren, da ich mit dem type noch nichts zu tun hatte.
QDataStream habe ich schon probiert ( label ist mein Objekt ):
QByteArray bytearray;
bytearray.setRawData(label, sizeof(label));
QDataStream datastream(bytearray, IO_WriteOnly);
setRawData() verlangt laut compiler ein const char* und kein Objekt.
In der Doku steht folgendes zu setRawData():
QMemArray<type> & QMemArray::setRawData ( const type * data, uint size )
Ich kann allerdings dieses <type> und const type* nicht interpretieren, da ich mit dem type noch nichts zu tun hatte.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Guten Morgen,
also mit XML kenn ich mich nicht aus...behalte es aber im Hinterkopf.
Diese Serialisierung brauch ich um Objekte, welche zu einem bestimmten Zeitpunkt einen bestimmten Zustand haben persistent zu machen, Sprich alle Daten aus dem Hauptspeicher ( transiente Daten ) auf die Platte legen
( persistente Daten ).
Wegen der Funktion:
Meinst du es so, das ich meine Objekte an die Funktion übergebe und die members einzeln in einen QDataStream schreibe und diesen als Rückgabewert in eine Datei Speichere?
also mit XML kenn ich mich nicht aus...behalte es aber im Hinterkopf.
Diese Serialisierung brauch ich um Objekte, welche zu einem bestimmten Zeitpunkt einen bestimmten Zustand haben persistent zu machen, Sprich alle Daten aus dem Hauptspeicher ( transiente Daten ) auf die Platte legen
( persistente Daten ).
Wegen der Funktion:
Meinst du es so, das ich meine Objekte an die Funktion übergebe und die members einzeln in einen QDataStream schreibe und diesen als Rückgabewert in eine Datei Speichere?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Ja, du redest von Memberfunktionen.
So müsste ich ja für jede Klasse, die ich verwende eine Funktion
serialize() schreiben.
Und ich kann ja QTable nicht umbauen.
Es müsste doch möglich sein eine eigene Klasse zu schaffen und mit den entsprechenden überladenen Funktionen z.B. QTable table; QLable lable;
usw...zu speichern. Ich hätte dann aber nen Haufen überladener Funktionen...ob das so gut ist.
Na ja, also es gibt in Qt also keine Implementation zum Serialisieren von Objekten.
Wenn jmd eine gute Idee hat bitte posten, sonst werde ich mal meinen Hirnschmalz anstrengen und ne gute Lösung suchen, auch mit XML.
So müsste ich ja für jede Klasse, die ich verwende eine Funktion
serialize() schreiben.
Und ich kann ja QTable nicht umbauen.
Es müsste doch möglich sein eine eigene Klasse zu schaffen und mit den entsprechenden überladenen Funktionen z.B. QTable table; QLable lable;
usw...zu speichern. Ich hätte dann aber nen Haufen überladener Funktionen...ob das so gut ist.
Na ja, also es gibt in Qt also keine Implementation zum Serialisieren von Objekten.
Wenn jmd eine gute Idee hat bitte posten, sonst werde ich mal meinen Hirnschmalz anstrengen und ne gute Lösung suchen, auch mit XML.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Das verstehe ich jetzt nicht wirklich.
Wem soll ich QTable vererben.
Angenommen:
QTable table;
...
...
table.serialize(); //serialisiert Tabellenmerkmale wie Size,Background usw. mit dem Inhalt
Da brauch ich ne Funktion, die nen Member von QTable ist.
Wahrscheinlich meinst du aber was anderes, oder?
Wem soll ich QTable vererben.
Angenommen:
QTable table;
...
...
table.serialize(); //serialisiert Tabellenmerkmale wie Size,Background usw. mit dem Inhalt
Da brauch ich ne Funktion, die nen Member von QTable ist.
Wahrscheinlich meinst du aber was anderes, oder?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
Archimedes
- Beiträge: 3
- Registriert: 24. August 2006 10:54
QDataStream & operator<<(QDataStream &s, DeinObjekt & obj)Daniellus hat geschrieben:Ja, mit portierbar ist genau das gemeint, was Java's "Serializable" tut.
QDataStream habe ich schon probiert ( label ist mein Objekt ):
QByteArray bytearray;
bytearray.setRawData(label, sizeof(label));
QDataStream datastream(bytearray, IO_WriteOnly);
setRawData() verlangt laut compiler ein const char* und kein Objekt.
In der Doku steht folgendes zu setRawData():
QMemArray<type> & QMemArray::setRawData ( const type * data, uint size )
Ich kann allerdings dieses <type> und const type* nicht interpretieren, da ich mit dem type noch nichts zu tun hatte.
{
s.writeRawBytes((char *)&obj,sizeof(obj));
return s;
}