はじめまして
MFCでINIファイルから読み出しをやっています。
//ファイルを読み込みます
CWinApp* pApp = AfxGetApp();
CString strFile = pApp->GetProfileString(Data, script_firstRead,
NULL);
DWORD ii;
file.Open(_T(strFile),CFile::modeRead | CFile::shareDenyNone);
ii = file.GetLength();←ここで落ちます(;;)
ビルドから内部で実行すればできるのですが、外側のexeから実行すれば、例外で死にます。
なぜ、中から(ビルド側から)はいけるのに、外側(exeファイルから)はだめなのでしょう
か?
外側のexeから実行っていう表現がちょっとつかみかねますが、
元の表現をそのまま使わせていただきます。
外側のexeから実行したときのカレントディレクトリと
デバッグで実行したときではカレントディレクトリが違います。
だから外側から実行したときはiniファイルが見つからず、落ちるのでしょう。
Open()で飛んでくるExeptionで理由を調べれば一発かな。
そこまでしなくても、戻り値くらいはチェックすべきかも。
まず、GetProfileStringから取得したファイルのパス名が空で無いかの
判定をするべきでしょう。空のファイル名で開こうとしても無意味ですから。
次にfile.Openの戻り値をキチンと判定しましょう。
オープンできていないのにfile.GetLength();は使えないのでは?
基本的にエラーが起こりうる関数呼び出しに関しては
必ずエラー判定をして正常に呼び出せた時とエラーだった時で
処理を切り分けるようにしないとだめですよ。
エラーチェックをキチンとすることでどこに問題があるのかが
はっきりしてデバッグもやりやすくなります。