关于文件写失效问题--MFC文件读写策略和缓存策略相关

BeginnerCpp 2005-05-10 05:50:50
各位兄弟,
我写了一个程序,
在程序中片断 :

TRACE("SaveInf\n");
m_cpListViewInfo->Trace();

CFile file;
CFileStatus status;
if( !file.Open((LPCTSTR)m_strFilePath, CFile::modeCreate|CFile::modeWrite ))
{
AfxMessageBox("保存设定失败!");
return false;
}

CArchive ar(&file, CArchive::store);
ar.WriteObject(m_cpListViewInfo);

ar.Close();
file.Close();

TRACE("After SaveInf\n");
m_cpListViewInfo->Trace();

m_cpListViewInfo->Trace()是一个函数,
实现打印内部成员到调试窗口的功能.



现在发现,
m_cpListViewInfo->Trace()表示数据确实是符合设定的(程序的其它部分改写了m_cpListViewInfo中内容)
但是磁盘文件中没有改变,依然是旧的记录.


使用调试工具深入到 ar.WriteObject(m_cpListViewInfo);
发现到一句Write(XXX)语句前都正常,
就是无法把东西写到磁盘上.



这个bug重现性很好,
每次可以重现,



一个值得关注的情况是 :
这个bug每次出现再我在程序中打开了新文件后,
所以我怀疑是不是和"文件系统的读写策略""文件缓存策略"有关.
盼赐教.
...全文
193 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeginnerCpp 2005-06-01
  • 打赏
  • 举报
回复
现在我已经弃用MFC中的序列化方式,
改用C++标准库来读写文件,
结贴
BeginnerCpp 2005-05-10
  • 打赏
  • 举报
回复
请问楼主: m_cpListViewInfo 对象对应的类(应该是从 CObject 派生的) 有没有添加序列化支持?

============

有,


m_cpListViewInfo是保存ListView界面的设定值,
用户可以程序运行时期动态调整内容,
在BOOL CRecordBookApp::InitInstance() 中加载文件初始化m_cpListViewInfo内容
在int CRecordBookApp::ExitInstance() 中保存文件最新的设置到m_cpListViewInfo去,


在程序只是"运行->关闭"时候,
运行正常,设置可以正常保存和加载,
但是如果"运行->打开文件->关闭"时候,
就无法保存设置了.


通过跟踪,
"TRACE("SaveInf\n");
m_cpListViewInfo->Trace();"
明明m_cpListViewInfo内容已经被更改了,
到了
"TRACE("After SaveInf\n");
m_cpListViewInfo->Trace();"
m_cpListViewInfo也可以证明自己是正确的,

所以最大的怀疑在
"ar.WriteObject(m_cpListViewInfo);"
通过跟踪,
直到"WriteFile(XXX)"之前都是正确的,
就是内容没有被更新到文件.

所以怀疑是不是我的程序"打开文件"这个操作,
导致的问题,比如文件的缓存啊,读写啊这些琐碎的事项


jerry 2005-05-10
  • 打赏
  • 举报
回复
请问楼主: m_cpListViewInfo 对象对应的类(应该是从 CObject 派生的) 有没有添加序列化支持?

BeginnerCpp 2005-05-10
  • 打赏
  • 举报
回复
up
BeginnerCpp 2005-05-10
  • 打赏
  • 举报
回复
win xp系统,
VS2003, MFC的SDI程序
每次只要"仅运行程序,不打开文件",上面代码就可以正常运行,
但是只要在运行期间打开了文件,上面代码一定无法正常运行,
表现在上面代码段创建的文件没有写入新内容.


请高手赐教MFC的文件策略
谢了.
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制中的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统中电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧