void CLogintView::OnOpen()
{
// TODO: Add your command handler code here
CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
".txt",//默认的打开文件的类型
NULL,//默认打开的文件名
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,//打开只读文件
"文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*||");//所有可以打开的文件类型
if(dlg.DoModal()==IDOK)
{
CString m_FilePath = dlg.GetPathName();////////取出文件路径
CString m_path;
m_path=m_FilePath;//将文件的路径放入m_path
}
CStdioFile File;
File.Open(m_path,CFile::modeRead|CFile::typeText );
CString strLine;
File.ReadString(strLine);不加最后一行打开文件没有问题 加了最后一行一打开就出错帮分析分析
{
// TODO: Add your command handler code here
CFileDialog dlg(TRUE,//TRUE是创建打开文件对话框,FALSE则创建的是保存文件对话框
".txt",//默认的打开文件的类型
NULL,//默认打开的文件名
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,//打开只读文件
"文本文件(*.txt)|*.txt|所有文件 (*.*)|*.*||");//所有可以打开的文件类型
if(dlg.DoModal()==IDOK)
{
CString m_FilePath = dlg.GetPathName();////////取出文件路径
CString m_path;
m_path=m_FilePath;//将文件的路径放入m_path
}
CStdioFile File;
File.Open(m_path,CFile::modeRead|CFile::typeText );
CString strLine;
File.ReadString(strLine);不加最后一行打开文件没有问题 加了最后一行一打开就出错帮分析分析
if(dlg.DoModal()==IDOK)
{
CString m_FilePath = dlg.GetPathName();////////取出文件路径
CString m_path;
m_path=m_FilePath;//将文件的路径放入m_path
}上述代码中你CString m_path变量的定义是一个局部变量,其有效区域是在“{”和“}”之间的区域,离开
这个区域后就会自动销毁。而你在m_path已经销毁后,又执行一下代码:CStdioFile File;
File.Open(m_path,CFile::modeRead|CFile::typeText );此时,m_path里面的路径根本不是你所需要的路径。对于报错的原因,应该是文件的路径有误,导致文件打开失败,因此,你在读取文件的时候会报错。
解决办法,代码如下:CString m_path = _T("");
if(dlg.DoModal()==IDOK)
{
CString m_FilePath = dlg.GetPathName();////////取出文件路径
m_path=m_FilePath;//将文件的路径放入m_path
}CStdioFile File;
BOOL bTag = File.Open(m_path,CFile::modeRead|CFile::typeText );
CString strLine = _T("");
if (bTag)///<确保文件打开成功
{
File.ReadString(strLine);
}