注册 登录
编程论坛 VC++/MFC

管理系统序列化以及写入写出问题

xiaqizjy 发布于 2013-09-08 13:47, 720 次点击
只有本站会员才能查看附件,请 登录
新手写的教师住房管理系统,老师要求存盘数据,DOC代码里的序列化函数好像有问题,,但怎么都找不到问题出在哪。。调试中又一次调试好了,但是生成列表时程序出错,好像是写入写出也有问题,,菜鸟想破脑袋也不知道怎么回事。,。求大神指导,,用户名密码都是admin
7 回复
#2
yuccn2013-09-08 19:44
1
CString        worky;
if(a[i].worky>1)   CString        和1 怎么比较?

 
a[u].Serialize(ar);   
错误       error C2248: “CArchive::CArchive”: 无法访问 protected 成员(在“CArchive”类中声明)    c:\users\yuccn\desktop\22222\22222doc.cpp    73

#3
xiaqizjy2013-09-09 00:18
回复 2楼 yuccn
请问大神第二个问题该怎么解决、、
#4
xiaqizjy2013-09-10 16:21
回复 楼主 xiaqizjy
大神,这个程序第一遍运行没有问题了,第二遍运行就会arccore文件出错,应该是文件序列化的问题、、、写入写出有问题。。求大神帮忙看看行吗?~刚学MFC的菜鸟老师布置的作业、、实在找不出问题所在因为对序列化实在是不了解
#5
xiaqizjy2013-09-10 16:21
回复 楼主 xiaqizjy
只有本站会员才能查看附件,请 登录
#6
我菜1192013-09-10 23:05
刚才给你看了下,说实在的,刚开始我也没找到问题所在,后来仔细看了一下,哥啊,if(ar.IsStoring())时,应采用ar<<XXX,好不?还得我找了半天也没找到问题所在,其次还有一个问题是
程序代码:
CMy22222Doc::CMy22222Doc()
{
        // TODO: add one-time construction code here
    CFile file;
    if(!file.Open("data.txt",CFile::modeRead))
    {
        return;
    }
    //这段代码注释掉,因为已经Open了,所以不需要再次Open了
    /*
    else
    {
        file.Open("data.txt",CFile::modeRead);
    }
   
*/

    CArchive Ar(&file,CArchive::load);           
    Serialize(Ar);

}


程序代码:
void Serialize(CArchive &ar)
    {
        if(ar.IsStoring())
        {
            ar<<bornf; //注意:是<<
            ar<<bornm;
            ar<<borny;
            ar<<hy;
            ar<<level;
            ar<<name;
            ar<<score;
            ar<<sex;
            ar<<sq;
            ar<<square;
            ar<<workf;
            ar<<workm;
            ar<<worky;
            ar<<xl;
            ar<<xlf;
            ar<<zc;
            ar<<zcf;
        }
        else
        {
            ar>>bornf; //注意:是>>
            ar>>bornm;
            ar>>borny;
            ar>>hy;
            ar>>level;
            ar>>name;
            ar>>score;
            ar>>sex;
            ar>>sq;
            ar>>square;
            ar>>workf;
            ar>>workm;
            ar>>worky;
            ar>>xl;
            ar>>xlf;
            ar>>zc;
            ar>>zcf;
        }
    }
#7
我菜1192013-09-10 23:12
说到序列化(或者串行化),你的这种用法倒也是可以的,先构造类的对象,然后从本地文件读取依次填充类对象成员,这种方式主要是调用Serialize()函数,不同于调用CArchive<< 和 CArchive >>,那你在类中使用的DECLARE_SERIAL和IMPLEMENT_SERIAL宏就没有什么用了,也不必从CObject类派生!
#8
xiaqizjy2013-09-11 02:52
回复 6楼 我菜119
谢谢大神指导、、~
1