c++로 프로젝트의 파일패스를 추출해서 문자열에넣고 그걸 이용해서 처리를 하려는데...정말 이상한점이 있습니다.
문자열 변수에 넣었을때 잘 들어가나 싶은데 메소드를 빠저나가거나..try문안에서 실행했을때 try를 빠저나가면 패스를 넣었던 문자열이 비어버립니다.
IniFileController::IniFileController()
{
numOfServer = "NumberOfServer";
section = "AP_SERVER";
fileName = "AP_SERVER_LIST.ini";
_TCHAR* splitBuf;
_TCHAR* splitContxt;
CString exeName;
CString projectPath;
_TCHAR buf[1024];
GetModuleFileName(0,buf,1024);
projectPath = buf;
splitBuf = buf;
splitBuf = strtok_s(buf, "\\", &splitContxt);
while(strtok_s(NULL, "\\", &splitContxt) != NULL)
{
splitBuf = strtok_s(NULL, "\\", &splitContxt);
}
exeName = splitBuf;
projectPath.Replace(exeName, fileName);
iniPath = projectPath;
}
컨스트럭터에서 iniPath에 습득한 문자열을 넣었습니다. iniPath는 LPCTSTR형이고 h파일에서 정의했습니다.
마지막줄의 iniPath = projectPath; 를 보면 iniPath에 값이 잘 들어가 있는데 그 다음 줄의 } 에 가면
iniPath에 잘못된 문자가 들어있습니다 어쩌고 저쩌고 합니다...
그리고 위의 컨스트럭터 아래에 다음 메소드가 있습니다.
bool IniFileController::GetNumServer()
{
//設定ファイルのNumberOfServer取得
try
{
//iniファイルの存在を確認する
if(!fileChecker.GetFileExists(iniPath))
{
LPCTSTR err = "設定ファイルがモジュールと同じ場所に存在しません。\n";
throw err;
}
}
catch(LPCTSTR err)
{
std::cout << err;
return false;
}
return true;
}
여기서 iniPath를 사용하는데요...컨스트럭터에서 마지막에 이상한게 들어갔기때문에 역시나 여기서도 이상한게 들어가있는 그대로입니다...컨스트럭터에 하고있는 iniPath에 값 넣는 처리를 그대로 컨스트럭터가 아닌 다른 메소드에서 실행하거나 해도 같은 현상이 일어납니다.
아래와 같이 할 경우에는 원하는 처리를 얻을 수 있기는 합니다..
bool IniFileController::GetNumServer()
{
//設定ファイルのNumberOfServer取得
try
{
_TCHAR* splitBuf;
_TCHAR* splitContxt;
CString exeName;
CString projectPath;
_TCHAR buf[1024];
GetModuleFileName(0,buf,1024);
projectPath = buf;
splitBuf = buf;
splitBuf = strtok_s(buf, "\\", &splitContxt);
while(strtok_s(NULL, "\\", &splitContxt) != NULL)
{
splitBuf = strtok_s(NULL, "\\", &splitContxt);
}
exeName = splitBuf;
projectPath.Replace(exeName, fileName);
iniPath = projectPath;
//iniファイルの存在を確認する
if(!fileChecker.GetFileExists(iniPath))
{
LPCTSTR err = "設定ファイルがモジュールと同じ場所に存在しません。\n";
throw err;
}
}
catch(LPCTSTR err)
{
std::cout << err;
return false;
}
return true;
}
이렇게 할경우 iniPath를 습득해서 바로 쓰기때문에 뭐..일단 정상적으로 되긴합니다만...이 현상이 이해가 안갑니다..
나름 변수를 포인터로도 바꿔보고 해봤는데 해결이 안되네요...도대체 왜이러는 걸까요..ㅠ