兰斯丶洛特 2017-03-28 02:44 采纳率: 0%
浏览 1071
已结题

求大神解答关于MFC保存修改后的数据

//选择参数文件
void CQdParamAnalyzeDlg::OnSelectParamFile()
{
// TODO: Add your control notification handler code here
CFileDialog dlg( true,NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "PRM.*.*.*.*|PRM.*.*.*" , NULL );
if(dlg.DoModal()==IDOK)
{
m_ParamFileName.SetWindowText(dlg.GetPathName());
}

}

//解析参数文件
void CQdParamAnalyzeDlg::OnParseParamFile()
{
// TODO: Add your control notification handler code here
CString TempStr ;
CString stParamFileName;
int pageid=0;
BYTE buffer[1024];
WORD wRead;
CFile f;
CFileException ex;

m_ParamFileName.GetWindowText(stParamFileName);
stParamFileName.TrimLeft();
stParamFileName.TrimRight();
if(stParamFileName== "")
{
    AfxMessageBox("请选择参数文件!!!");
    return ;
}

if (!f.Open(stParamFileName,CFile::modeRead | CFile::shareDenyWrite, &ex))
{
    TCHAR szError[1024];
    ex.GetErrorMessage(szError, 1024);
    TempStr.Format("无法打开参数文件: %s",szError);
    AfxMessageBox(TempStr);
    return ;
}

f.SeekToBegin();
//首先读取前22个文件头
// 文件类型         Byte        1
// 文件生成时间       Timestamp   7
// 文件版本         Byte        1  
// 参数类型         Word        2   ”
// 参数版本号      Long        4
// 参数生效时间   Timestamp       7

if((wRead = f.Read(buffer,22))!=22)
{
    AfxMessageBox("参数文件头读取错误!");
    f.Close();
    return ;
}else
{
    //文件类型      Byte  1
    TempStr.Format("%d",buffer[0]);
    m_FileType.SetWindowText(TempStr); 

    //文件生成时间        Timestamp   7   YYYYMMDD24HHMISS.文件生成的时间
    TempStr.Format("%02X%02X%02X%02X%02X%02X%02X",
        buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7]);
    m_FileCreateDateTime.SetWindowText(TempStr); 

    //文件版本 Byte     1   
    TempStr.Format("%d",buffer[8]);
    m_FileVersion.SetWindowText(TempStr); 

    //参数类型 Word     2   
    TempStr.Format("0x%02X",*(WORD *)(buffer+9));
    m_ParamType.SetWindowText(TempStr); 

    // 参数版本号      Long        4
    TempStr.Format("%d",*(DWORD *)(buffer+11));
    m_ParamVersion.SetWindowText(TempStr); 

    // 参数生效时间   Timestamp       7
    TempStr.Format("%02X%02X%02X%02X%02X%02X%02X",
        buffer[15],buffer[16],buffer[17],buffer[18],buffer[19],buffer[20],buffer[21]);
    m_ParamEffectDateTime.SetWindowText(TempStr); 
}

m_ParamType.GetWindowText(TempStr);
if(TempStr=="0x01")  
{
    m_DlgRouteMap.Parse(&f);
    pageid =0;
}
else if(TempStr=="0x02")
{
    m_DlgCalendar.Parse(&f);
    pageid =1;
}
else if(TempStr=="0x03")    
{
    m_DlgTicketControl.Parse(&f);
    pageid =2;
}
else if(TempStr=="0x04")
{
    m_DlgFee.Parse(&f);
    pageid =3;
}
else if(TempStr=="0x05")    
{
    m_DlgSystem.Parse(&f);
    pageid =4;
}
else if(TempStr=="0x10")
{
    m_DlgAccFullBlackList.Parse(&f);
    pageid =7;
}
else if(TempStr=="0x11")
{
    m_DlgAccIncBlackList.Parse(&f);
    pageid =8;
}
else if(TempStr=="0x12") 
{
    m_DlgExternTicketReflect.Parse(&f);
    pageid =9;
}
else if(TempStr=="0x20") 
{
    m_DlgYktBlackList.Parse(&f);
    pageid =10;
}else
{
    AfxMessageBox("未知参数类型:"+TempStr);
    f.Close();
    return;
}

现在的问题是我要将修改TempStr=="0x10"中的数据并将其保存,但是修改之后的数据在保存之后再一次读取解析的时候弹出“参数文件头读取错误”请大神帮忙解答一下,最好能有代码,谢谢

  • 写回答

1条回答 默认 最新

  • Eleven 2017-03-28 03:17
    关注

    请在Debug模式下单步调试一下看看

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况