10 个解决方案
#1
If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
#2
路径没问题,放在exe的同一目录下就好了。
如果是调试的话需要放在工程目录下,否则就需要手动设置调试目录。
如果是调试的话需要放在工程目录下,否则就需要手动设置调试目录。
#3
最好使用绝对路径,用GetModuleFileName()得到exe模块的路径,然后拼成ini文件的路径
#4
是这样的,我现在调试这个程序,所以放在了相同的目录下,问一下,是不是exe文件夹下也需要添加一个ini文件吗
#5
我在exe文件夹下也放了一个ini文件,但还是读不到,这个写法我过去写过,好用啊,怎么突然不好用了呢
#6
对拉,我想问一下,设置相对路径时是应该制定到类的同一个文件夹下,还是指定到exe的文件夹下呢
#7
CString CMyFormats::GetCurrentPathName(PathType type/* = 0*/)
{
TCHAR pFileName[MAX_PATH];
if(type == Path_WorkFolder) //工作路径,
{
int nPos = GetCurrentDirectory( MAX_PATH, pFileName);
CString csFullPath(pFileName);
if( nPos < 0 )
return CString("");
else
return csFullPath;
}
else
{
HMODULE module = GetModuleHandle(0);
GetModuleFileName(module, pFileName, MAX_PATH);
CString csFullPath(pFileName);
if(type == Path_ExeFolder) //应用程序所在路径/debug路径,不包括文件名
{
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left( nPos );
}
else if(type == Path_FullPath) //应用程序路径,包括文件名
{
return csFullPath;
}
else if(type == Path_ExeName) //应用程序名,不包括路径
{
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Right(csFullPath.GetLength() - nPos - 1);
}
else if(type == Path_ExeDisk) //应用程序磁盘D:
{
int nPos = csFullPath.Find( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left(nPos);
}
}
return CString("");
}
CString path= GetCurrentPathName(Path_ExeFolder)+ “\\stateserver.ini";
使用绝对路径
#8
相对路径是相对于当前的工作目录,而不是相对于exe所在的目录
在IDE启动调试时当前的工作目录一般是*.sln*dsw所在目录而不是debug/release目录,这和从debug/release目录中启动exe不一样
在IDE启动调试时当前的工作目录一般是*.sln*dsw所在目录而不是debug/release目录,这和从debug/release目录中启动exe不一样
#9
一般相对路径,文件放在*.vcproj同一文件夹中。。。
#10
好的,使用7楼的方法解决啦,谢谢9楼,我再试试你的方法
#1
If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
#2
路径没问题,放在exe的同一目录下就好了。
如果是调试的话需要放在工程目录下,否则就需要手动设置调试目录。
如果是调试的话需要放在工程目录下,否则就需要手动设置调试目录。
#3
最好使用绝对路径,用GetModuleFileName()得到exe模块的路径,然后拼成ini文件的路径
#4
是这样的,我现在调试这个程序,所以放在了相同的目录下,问一下,是不是exe文件夹下也需要添加一个ini文件吗
#5
我在exe文件夹下也放了一个ini文件,但还是读不到,这个写法我过去写过,好用啊,怎么突然不好用了呢
#6
对拉,我想问一下,设置相对路径时是应该制定到类的同一个文件夹下,还是指定到exe的文件夹下呢
#7
CString CMyFormats::GetCurrentPathName(PathType type/* = 0*/)
{
TCHAR pFileName[MAX_PATH];
if(type == Path_WorkFolder) //工作路径,
{
int nPos = GetCurrentDirectory( MAX_PATH, pFileName);
CString csFullPath(pFileName);
if( nPos < 0 )
return CString("");
else
return csFullPath;
}
else
{
HMODULE module = GetModuleHandle(0);
GetModuleFileName(module, pFileName, MAX_PATH);
CString csFullPath(pFileName);
if(type == Path_ExeFolder) //应用程序所在路径/debug路径,不包括文件名
{
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left( nPos );
}
else if(type == Path_FullPath) //应用程序路径,包括文件名
{
return csFullPath;
}
else if(type == Path_ExeName) //应用程序名,不包括路径
{
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Right(csFullPath.GetLength() - nPos - 1);
}
else if(type == Path_ExeDisk) //应用程序磁盘D:
{
int nPos = csFullPath.Find( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left(nPos);
}
}
return CString("");
}
CString path= GetCurrentPathName(Path_ExeFolder)+ “\\stateserver.ini";
使用绝对路径
#8
相对路径是相对于当前的工作目录,而不是相对于exe所在的目录
在IDE启动调试时当前的工作目录一般是*.sln*dsw所在目录而不是debug/release目录,这和从debug/release目录中启动exe不一样
在IDE启动调试时当前的工作目录一般是*.sln*dsw所在目录而不是debug/release目录,这和从debug/release目录中启动exe不一样
#9
一般相对路径,文件放在*.vcproj同一文件夹中。。。
#10
好的,使用7楼的方法解决啦,谢谢9楼,我再试试你的方法