Serialize
-
Hallo,
ich suche nach einer einfachen Erklärung der Serialize Funktion.
Die Funktion an sich ist mir eigentlich klar, aber wo wird diese
aufgerufen usw..?
In der FAQ habe ich leider nichts gefunden...
So schwierig kann das doch nicht sein!Danke
Thomas
-
Schau mal hier:
http://mitglied.lycos.de/ehenkes/mfc_einsteigerbuch_kapitel7.htmDa habe ich das an einem einfachen Beispiel vorgeführt. Sollte helfen.
-
OK. Danke..
Das ist ja wirklich kein Problem!
Aber: wie speichere ich die Daten z.B. eines Dialoges, wo es ja bekanntlich den Böbbel Datei speichern nicht gibt? Geht das auch mit serialize?
-
ja nur must du diese selber implementieren
Schau dir mal CArchive, CFile an
-
Also gut...
Ich habe ne Anwendung von der ich die Daten, welche im Hauptfenster stehen, problemlos mit serialize speichern kann. Weiterhin habe ich noch Dialoge (Modal), in denen ich zur Laufzeit Einträge mache, z.B. in ein CListCrtl, aber natürlich auch andere Member - Variablen. Wenn ich mit dem Programm fertig bin, möchte ich auf den Button "Speichern unter" drücken und alle Einstellungen, auch die der Dialoge natürlich, sollen in eine Datei geschrieben werden.
Und ich schnalls grad gar nicht!!!
Danke
Thomas
-
Codeschnipsel aus meinem Projekt:
void CRemoteCtrlDlg::SaveLoad(bool bLoad) { CFile file; if(file.Open("c:\\config",bLoad ? CFile::modeRead : CFile::modeCreate | CFile::modeWrite)) { CArchive ar(&file,bLoad ? CArchive::load : CArchive::store); _user.Serialize(ar); ar.Close(); file.Close(); } if(_user.IsEmpty()) _user["Admin"] = new UserData("password",'A'); }
-
So weit, so gut!
Vielleicht habe ich doch ein Grundsätzliches Problem mit der Serialize(..) Funktion. Wenn ich einen Modalen Dialog habe dann sind doch dessen Variablen wieder gelöscht, wenn ich ihn schließe. Oder speichert die Serialize Funktion automatisch die werte??
-
void CRemoteCtrlDlg::SaveLoad(bool bLoad) { CFile file; if(file.Open("c:\\config",bLoad ? CFile::modeRead : CFile::modeCreate | CFile::modeWrite)) { CArchive ar(&file,bLoad ? CArchive::load : CArchive::store); if(ar.IsStoring()) // So sind die Serialize-Funktionen meist aufgebaut { ar << m_meinString; ar << m_meinDoubleWert; } else { ar >> m_meinString; ar >> m_meinDoubleWert; } m_meinCListObjekt.Serialize(ar); ar.Close(); file.Close(); } }
[ Dieser Beitrag wurde am 11.10.2002 um 12:55 Uhr von Nemesyzz editiert. ]
-
Danke, bis hier bin ich mittleweile auch gekommen. Mein Problem ist nun noch, dass die Daten in der Liste schon gespeichert werden. Ich kann zur Laufzeit den Dialog der die Liste enthält schließen und wieder öffnen und die Daten sind wieder da.
In der xyDoc.h mache ich mir ein Objekt auf die Klasse in der die Liste ist, in deinem Beispiel m_meinCListObjekt. In xyDoc.cpp in der Serialize Funktion habe ich es genau wie im Beispiel eingebunden, die Variablen bleiben aber leer....