wangMaryann
木木夕阳子
采纳率50%
2018-12-13 02:39 阅读 632
已采纳

以CFile::modeCreate 模式打开文件,数据清除失败

如题,写的mfcdll工程,保存数据时,创建了cflie对象,打开文件使用了清除模式,但是保存时,数据会重复写入,有没有解决方案?

ps,关闭软件,重新打开,第一次写入数据时会清空

CStdioFile f;
f.Open(path,CFile::modeCreate | CFile::modeWrite );
CHFile * pFile = new CHFile(&f);

//测试;
CBigDetect* pToolBigDetect = new CBigDetect;
HS_BASE_LIST.push_back((CBase*)pToolBigDetect);

int nSize = HS_BASE_LIST.size();
for (int i = 0 ; i < nSize ; i++)
{
    CBase* pTool = HS_BASE_LIST[i];
    if (pTool){
        pTool->WriteConfig(pFile);
    }
}
//关闭操作;
f.Close();

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    wangMaryann 木木夕阳子 2018-12-13 04:43

    找到原因了,并不是cfile打开文件没有清空,而是我在下边的测试代码段,
    CBigDetect* pToolBigDetect = new CBigDetect;
    HS_BASE_LIST.push_back((CBase*)pToolBigDetect);

    我点击保存后,再把文件删除,重新保存,结果数据还是重复的,但是关闭后第一次保存会清空,突然意识到是数据没有清空
    这才意识到,push_back之前没有清空数据,

    被自己蠢哭了

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-12-13 02:58

    CHFile是什么?
    你可以试试看,在开头加上
    f.Seek(0,CFile::begin);
    把文件指针移动到文件开头,再写入

    点赞 评论 复制链接分享

相关推荐