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

//选择参数文件
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"中的数据并将其保存,但是修改之后的数据在保存之后再一次读取解析的时候弹出“参数文件头读取错误”请大神帮忙解答一下,最好能有代码,谢谢

mfc

1个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问