serialisierung funktioniert nicht
-
void Cserialisierungs_modulDlg::OnBnClickedOk() { sin->m_list.AddTail(56); CFile file("C:\\test.dat",CFile::modeCreate|CFile::modeWrite); CArchive arc(&file,CArchive::store); arc << &sin; //OnOK(); } void Cserialisierungs_modulDlg::OnBnClickedButton1() { CFile file("C:\\test.dat",CFile::modeRead); CArchive arc(&file,CArchive::load); arc >> sin; //<---- will nicht m_member = sin->a ; UpdateData(FALSE); }
das ist die klasse des zu serialisierenden objekts
#pragma once #include "afx.h" #include "afxtempl.h" #include "stdafx.h" class CSingleton : public CObject { public: virtual void Serialize(CArchive &ar); static CSingleton* getInstance(); static CList <int,int> m_list; static int a; private: DECLARE_SERIAL(CSingleton); CSingleton(void); CSingleton(const CSingleton&); virtual ~CSingleton(void); };
#include "StdAfx.h" #include ".\singleton.h" #include "Funktionen.h" IMPLEMENT_SERIAL(CSingleton,CObject,1) CSingleton::CSingleton(void) { } CSingleton::~CSingleton(void) { } void CSingleton::Serialize(CArchive &ar){ if (ar.IsStoring()){ arc << m_list; arc <<a; } else{ arc >>m_list; arc >>m_list; } } CSingleton* CSingleton::getInstance() { static CSingleton instance; return &instance; } int CSingleton::a = 0; CList<int,int> CSingleton::m_list;
so das schreiben scheint ja zu funktionieren, aber beim lesen bekomme ich die meldung das versucht wurde hinter dem ende der datei zu lesen
-
kann ihm denn niemand helfen? ER zwingt mich sonst auch c++ zu lernen... oO
MFG
ein Freund
-
if (ar.IsStoring()){
arc << m_list;
arc <<a;
}
else{arc >>m_list;
arc >>a; //Versuch es mal so
}
}Versuch das mal
Gruß Matthias
-
CTecS schrieb:
if (ar.IsStoring()){
arc << m_list;
arc <<a;
}
else{arc >>m_list;
arc >>a; //Versuch es mal so
}
}Versuch das mal
Gruß Matthias
ja das hab ich auch noch gesehen, aber das löst leider nicht das problem
EDIT: alleine lösen macht am meisten spass
woher sollte ich auch wissen ,dass man nicht 2 objekte in eine datei packen kann