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