/*保存仿真資料*/
void CIntelligentVehicleView::OnSavetrace()
{
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
// CFile file(fileDlg.GetPathName(),CFile::modeWrite);
while (iter != g_listPath.end())
{
CNode curpos = *iter;
CFile file;
CString str;
CString strFilePath;
strFilePath=fileDlg.GetPathName();
//CString strFileName="mytest.txt";
SYSTEMTIME st;
GetLocalTime(&st);
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
file.Open(strFilePath,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
file.SeekToEnd();
file.Write((LPCTSTR)str,str.GetLength());
file.Close();
++iter;
if (iter == g_listPath.end())
break;
}
}
}
/*查閱仿真資料*/
void CIntelligentVehicleView::OnChecktrace()
{
// TODO: Add your command handler code here
// CFileDialog dlg(TRUE,"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.txt)|*.txt||");
// if(dlg.DoModal() == IDOK)
// {
// CString fileName = dlg.GetPathName();
// }
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
CStdioFile mfile(fileDlg.GetFileName(),CFile::modeRead);
iter = g_listPath.begin();
g_listPath.clear();
CString m_strTrace="";
CNode curpos;
// CString strFileName="mytest.txt";
CString strnull=" ";
CString xy="";
int pos;
// mfile.Open(strFileName,CFile::modeRead);
while(mfile.ReadString(m_strTrace))
{
pos=m_strTrace.Find(strnull);
xy=m_strTrace.Right(pos-2);
sscanf(xy,"%d %d",&(curpos.X),&(curpos.Y));
g_listPath.push_back(curpos);
}
mfile.Close();
loadtrace=true;
}
}
這是我寫的一個關于檔案讀寫的代碼,可是我保存以后,讀取的時候說是沒有保存的該檔案,也不知道錯哪了,麻煩大神幫忙看看,我的水平有限,謝謝了
uj5u.com熱心網友回復:
//注意寫入長度file.Write((LPCTSTR)str, str.GetLength() * sizeof(TCHAR));
uj5u.com熱心網友回復:
只是這個的問題嗎uj5u.com熱心網友回復:
CFile file(fileDlg.GetPathName(),CFile::modeWrite);要改為:
CFile file(fileDlg.GetPathName(),CFile::modeWrite|CFile::modeCreate);
uj5u.com熱心網友回復:
完全沒有檔案的時候,需要Create選項uj5u.com熱心網友回復:
現在保存進去的又不是.txt檔案了 這是怎么回事呢
uj5u.com熱心網友回復:
/*保存仿真資料*/
void CIntelligentVehicleView::OnSavetrace()
{
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetPathName(),CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate);
while (iter != g_listPath.end())
{
CString str;
SYSTEMTIME st;
CNode curpos = *iter;
GetLocalTime(&st);
file.Open(fileDlg.GetPathName(),CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate);
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
file.SeekToEnd();
file.Write((LPCTSTR)str,str.GetLength());
file.Close();
++iter;
if (iter == g_listPath.end())
break;
}
}
}
現在的問題是寫到檔案里面打開沒有東西!求解救
uj5u.com熱心網友回復:
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
file.SeekToEnd();
file.Write((LPCTSTR)str,str.GetLength());
這個有問題,Write不能寫CString str,只能寫其中的內容,可以改為:
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
file.SeekToEnd();
TCHAR TempStr[4096];
memset(TempStr,0,4096*sizeof(TCHAR));
lstrcpy(TempStr,str);
file.Write(TempStr,lstrlen(TempStr)*sizeof(TCHAR));
uj5u.com熱心網友回復:
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
file.SeekToEnd();
file.Write((LPCTSTR)str,str.GetLength());
file.Close();改成:
str.Format("%2d:%2d:%2d %d %d\r\n",st.wHour,st.wMinute,st.wSecond,curpos.X,curpos.Y);
TCHAR *pBuffer = str.GetBuffer(256);
file.SeekToEnd();
file.Write(pBuffer,(str.GetLength() + 1) * sizeof(TCHAR));
file.Close();
str.ReleaseBuffer();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/145257.html
標籤:基礎類
上一篇:程式設計面試題:如何利用socket在一個局域網內設計一個類似QQ功能的程式,要求高效 可靠 安全 易擴展
下一篇:用SNMP++包讀設備資訊
