myfile.dat中是一个CObject类的派生类serialize后得到的文件。
请问如何才能把这个文件中的内容读进一个CObList变量中?我已经
CFile myFile;
myFile.Open("myfile.dat",CFile::modeRead,NULL));
CArchive ar(&myFile,CArchive::load,512,NULL);

解决方案 »

  1.   

    这个文件是你自己生成得的,对吧,那你应该在文件的开始保存这个文件里的对象个数。在读时,取出这个值,然后在FOR循环里取出每一个对象加在CObList里就可以
      

  2.   

    例子(伪代码):
    Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
                  ar>>m_Counter ;//保存个数
                 for(int i=0;i<m_Counter;i++)
                    ar>>m_object;
    }
    else
    {
                  ar>>m_Counter;//读个数
                  for(int i=0;i<m_Counter;i++)//循环读出
                    {
                      ar>>m_Object;
                      m_List.Add(m_Object); //加入链表
                      }
    }
      

  3.   

    CObList list;
    list.Serialize(ar);
      

  4.   

    CObList 本身就有Serialize能力的啊!
      

  5.   

    我是这样做的。
    myFile.Open("d:\\comm\\data\\warn\\member.dat",CFile::modeCreate|CFile::modeWrite,NULL);
    CArchive ar(&myFile,CArchive::store,512,NULL);
    COperator opt,ope;           //COperator 派生自CObject
    opt.m_strID=_T("ad");
    opt.m_strPassword=_T("0123456");
    ope.m_strID=_T("ad2");
    ope.m_strPassword=_T("12");
    opt.Serialize(ar);
    ope.Serialize(ar); 
    ar.Close();
    myFile.Close();
    得到member.dat
    然后这样用 
    myFile.Open("d:\\comm\\data\\warn\\member.dat",CFile::modeRead,NULL);
    CObList OpList;
    CArchive ar(&myFile,CArchive::load,512,NULL);
    OpList.Serialize(ar); 
    调用时提示
    d:\\comm\\data\\warn\\member.dat格式出错!这错在什么地方呢?
      

  6.   

    写入时不是用CObList::Serialize,
    读取时也不能用,格式不对。
      

  7.   

    CFile::modeRead
    改为CFile::modeRead | CFile::typeText  
      

  8.   

    可能是这样
    CObList OpList;
    COperator opt,ope;
    OpList.Add( opt ) ;
    OpList.Add( ope ) ;OpList.Serialize()