003
02.10.2004, 00:45 Uhr
~michael l.
Gast
|
C++: |
// strukturen.h // Modifikatoren typedef class Modifier : public CObject { DECLARE_SERIAL (Modifier) public: CString m_bezeichnung; int m_mod_wert; CString m_mod_bechreibung; public: void Serialize(CArchive &ar); }mod_t;
//------------------------------------------------------------------------------------
// Attribut typedef class Attribut : public CObject { DECLARE_SERIAL (Attribut) public: int m_attributs_wert; int m_attributs_mod; int m_attributs_tmp_wert; int m_attributs_tmp_mod; CList<mod_t*,mod_t*>* m_mods; public: void Serialize(CArchive &ar); }attribut_t;
|
C++: |
// strukturen.cpp include "stdafx.h" #include "DDStrukturen.h"
//------------------------------------------------------------------------------------
IMPLEMENT_SERIAL (Modifier, CObject, 1) IMPLEMENT_SERIAL (Attribut, CObject, 1)
//------------------------------------------------------------------------------------
void Modifier::Serialize(CArchive &ar) { CObject::Serialize(ar);
if(ar.IsStoring()) { ar << m_bezeichnung << m_mod_wert << m_mod_bechreibung; } else { ar >> m_bezeichnung >> m_mod_wert >> m_mod_bechreibung; } }
//------------------------------------------------------------------------------------
void Attribut::Serialize(CArchive &ar) { CObject::Serialize(ar);
if(ar.IsStoring()) { ar << m_attributs_mod << m_attributs_tmp_mod << m_attributs_tmp_wert << m_attributs_wert;
// Liste der Modifikationen speichern, da der eingebaute // MFC Mechanismus nicht geht -> selber schreiben ar << m_mods->GetCount(); POSITION pos = m_mods->GetHeadPosition(); for(int i=0;i<m_mods->GetCount();i++) { m_mods->Serialize(ar); } } else { ar >> m_attributs_mod >> m_attributs_tmp_mod >> m_attributs_tmp_wert >> m_attributs_wert;
// Liste laden, int count=0; // Anzahl ar >> count; mod_t* mod = NULL; // Serialisieren: 1.Liste leeren, 2. neue Elemente einfügen POSITION pos = m_mods->GetHeadPosition(); for(int i=0;i<m_mods->GetCount();i++) { m_mods->RemoveAt(pos); } pos = m_mods->GetHeadPosition(); for(i=0;i<count;i++) { mod = new mod_t(); mod->Serialize(ar); pos = m_mods->InsertAfter(pos,mod); mod = NULL; } } }
|
das ist jetzt die variante wo ich versuche alles selbst zu machen. vorher hatte ich einfach
C++: |
m_mods->Serialize(ar);
|
|