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


Anmelden zum Antworten