1、CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("dbf文件(*.dbf)|*.dbf|所有文件(*.*)|*.*||"),this);
if(dlg.DoModal()==IDOK)
{
m_path=dlg.GetPathName();
UpdateData(FALSE);
}
CString temp;
CString winpath("");
for(int i=0;i<m_path.GetLength();i++)
{
temp=m_path.Mid(i,1);
if(temp=="\\")
temp="\\\\";
winpath+=temp;
}
CFile file;
char buf[30];
if(file.Open(winpath,CFile::modeRead))
{
file.Read(buf,20);
}
2、 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
_T("dbf文件(*.dbf)|*.dbf|所有文件(*.*)|*.*||"),this);
if(dlg.DoModal()==IDOK)
{
m_path=dlg.GetPathName();
UpdateData(FALSE);
}
CFile file;
char buf[30];
if(file.Open(m_path,CFile::modeRead))
{
file.Read(buf,20);
}
小弟发现这两种情况下都是成功的,请大家讨论一下为什么?
5 个解决方案
#1
上个问题你没有给winpath付初值
#2
CString 无需付初值,初始值为空字符串
#3
如果是取得的字符串的话,
好像'\\'和'\'都是对的,
这倒不知为什么?
好像'\\'和'\'都是对的,
这倒不知为什么?
#4
也许是这样的
刚才你的问题中:a是
CString a="c:\windows\system";
你后边的程序中想把\换成\其实这个时候a中就没有字符 \ 的
所以错误
刚才你的问题中:a是
CString a="c:\windows\system";
你后边的程序中想把\换成\其实这个时候a中就没有字符 \ 的
所以错误
#5
wistaria说的对。
你试验这2段程序的时候(尤其是第1部分),没有指定另外一个目录吧?如果仅是当前目录,程序段
for(int i=0;i<m_path.GetLength();i++)
{
temp=m_path.Mid(i,1);
if(temp=="\\")
temp="\\\\";
winpath+=temp;
}
就没有作用,winpath还是空串。
你再试试。
你试验这2段程序的时候(尤其是第1部分),没有指定另外一个目录吧?如果仅是当前目录,程序段
for(int i=0;i<m_path.GetLength();i++)
{
temp=m_path.Mid(i,1);
if(temp=="\\")
temp="\\\\";
winpath+=temp;
}
就没有作用,winpath还是空串。
你再试试。
#1
上个问题你没有给winpath付初值
#2
CString 无需付初值,初始值为空字符串
#3
如果是取得的字符串的话,
好像'\\'和'\'都是对的,
这倒不知为什么?
好像'\\'和'\'都是对的,
这倒不知为什么?
#4
也许是这样的
刚才你的问题中:a是
CString a="c:\windows\system";
你后边的程序中想把\换成\其实这个时候a中就没有字符 \ 的
所以错误
刚才你的问题中:a是
CString a="c:\windows\system";
你后边的程序中想把\换成\其实这个时候a中就没有字符 \ 的
所以错误
#5
wistaria说的对。
你试验这2段程序的时候(尤其是第1部分),没有指定另外一个目录吧?如果仅是当前目录,程序段
for(int i=0;i<m_path.GetLength();i++)
{
temp=m_path.Mid(i,1);
if(temp=="\\")
temp="\\\\";
winpath+=temp;
}
就没有作用,winpath还是空串。
你再试试。
你试验这2段程序的时候(尤其是第1部分),没有指定另外一个目录吧?如果仅是当前目录,程序段
for(int i=0;i<m_path.GetLength();i++)
{
temp=m_path.Mid(i,1);
if(temp=="\\")
temp="\\\\";
winpath+=temp;
}
就没有作用,winpath还是空串。
你再试试。