如题,写的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();
找到原因了,并不是cfile打开文件没有清空,而是我在下边的测试代码段,
CBigDetect* pToolBigDetect = new CBigDetect;
HS_BASE_LIST.push_back((CBase*)pToolBigDetect);
我点击保存后,再把文件删除,重新保存,结果数据还是重复的,但是关闭后第一次保存会清空,突然意识到是数据没有清空
这才意识到,push_back之前没有清空数据,
被自己蠢哭了
CHFile是什么?
你可以试试看,在开头加上
f.Seek(0,CFile::begin);
把文件指针移动到文件开头,再写入