首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC/MFC 相对路径有关问题

2012-03-18 
VC/MFC 相对路径问题我写的一个打开文件的程序,其中相对路径代码是这样写的:CString strPath::GetModuleF

VC/MFC 相对路径问题
我写的一个打开文件的程序,其中相对路径代码是这样写的:
  CString strPath; 
::GetModuleFileName( NULL, strPath.GetBuffer(MAX_PATH), MAX_PATH );
strPath.ReleaseBuffer();
strPath = strPath.Left(strPath.ReverseFind(_T('\\'))); 
ini_file_name = strPath + "\\ini\\Var_class.TXT";

  if(!file.Open(_T(ini_file_name),CFile::modeRead))
{
MessageBox("打开分类文件错误!", NULL,NULL);
return;
}
为什么我运行的时候一直是"打开分类文件错误!", 哪里出错了吗?资源文件都加载进来了,用绝对路径是可以打开的,但是不方便。请高手指点~

[解决办法]
看上去没问题,你最好把每一步操作后的字符串打印出来看看
[解决办法]
你这就是绝对路径。
非常简单的就知道哪里错了,你只需要MessageBox(ini_file_name)看看即可。很有可能是哪里多了一个斜杠,或者少了一个斜杠。
[解决办法]

[解决办法]
GetModuleFileName 运行时,获取的应该是 Debug 文件夹。
你输出 ini_file_name 看看是否正确。
[解决办法]

C/C++ code
CString    strPath;       GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);       strPath.ReleaseBuffer();       int    nPos;       nPos=strPath.ReverseFind('\\');       strPath=strPath.Left(nPos);
[解决办法]
自己调试看下输出的是什么路径
[解决办法]
ini_file_name取得跟径不对,你在debug下再建个ini目录,另外,你看看是不是多了个'\'
[解决办法]
直接看看ini_file_name的路径对不?
[解决办法]
这个问题我碰到过类似的
//获取当前程序的完整路径,不包括程序名 
CString Setpersonality::GetCurDir() 

TCHAR sDrive[_MAX_DRIVE]; 
TCHAR sDir[_MAX_DIR]; 
TCHAR sFilename[_MAX_FNAME],Filename[_MAX_FNAME]; 
TCHAR sExt[_MAX_EXT]; 
GetModuleFileName(AfxGetInstanceHandle(), Filename, _MAX_PATH); //绝对路径,包括程序名
_tsplitpath(Filename, sDrive, sDir, sFilename, sExt); //把上述得到的路径给拆了
CString homeDir(CString(sDrive) + CString(sDir) ); 
int nLen = homeDir.GetLength(); 
if(homeDir.GetAt(nLen-1) != _T( '\\ ')) 
homeDir += "\\ "; 
return homeDir; 
}

热点排行