009
19.08.2005, 15:43 Uhr
mmc20
puss in boots
|
hi, also am copy-ctor liegts auf keinen fall da für das serialisieren keiner nötig ist. hier mal ein beispiel einer klasse bei welcher die serialisierung funktioniert (ohne copy-ctor)
C++: |
// Data.h : Header-Datei //
class CData : public CObject { DECLARE_SERIAL (CData) public: CData(); virtual ~CData(); void Serialize(CArchive& ar);
// DatenMembers int iDiamX, iDiamZ; CString sKunde, sName, sControls; };
|
C++: |
// Data.cpp: Implementierungsdatei //
#include "stdafx.h" #include "Data.h"
IMPLEMENT_SERIAL (CData, CObject, 1)
CData::CData() { }
CData::~CData() { }
void CData::Serialize(CArchive &ar) { CObject::Serialize( ar );
if ( ar.IsStoring() ) { ar << sKunde << sName << sControls; ar << iDiamX << iDiamZ; } else { ar >> sKunde >> sName >> sControls; ar >> iDiamX >> iDiamZ; } }
|
das ganze wird dann in ein "CTypedPtrArray"-member gespeichert:
C++: |
CTypedPtrArray<CObArray, CData*> m_DataArray;
|
und schon kann man einfach laden/speichern:
C++: |
void CDeinDlg::OnLoadDA( CString sFile ) { int res = -1; CFile file; if ( file.Open( sFile, CFile::modeRead ) ) { CArchive ar( &file, CArchive::load|CArchive::bNoFlushOnDelete ); ar >> res; m_DataArray.SetSize( res, 10 ); m_DataArray.Serialize( ar ); } else MessageBox( "Datei nicht vorhanden, oder beschädigt.", " Fatal Error", MB_ICONERROR|MB_OK ); file.Close(); }
void CDeinDlg::OnSaveDA( CString sFile ) { CFile file; if ( file.Open( sFile, CFile::modeCreate | CFile::modeWrite ) ) { CArchive ar( &file, CArchive::store ); // |CArchive::bNoFlushOnDelete ar << m_DataArray.GetSize(); m_DataArray.Serialize( ar ); } else MessageBox( "Daten konnten nicht gespeichert werden.", " Fatal Error", MB_ICONERROR|MB_OK ); file.Close(); }
|
|