INIファイルについて – プログラミング – Home

通知
すべてクリア

INIファイルについて


レイナ
 レイナ
(@レイナ)
ゲスト
結合: 17年前
投稿: 1
Topic starter  

 はじめまして

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ファイルから)はだめなのでしょう
か?


引用解決済
トピックタグ
とおりすがっちゃった
 とおりすがっちゃった
(@とおりすがっちゃった)
ゲスト
結合: 17年前
投稿: 1
 

外側のexeから実行っていう表現がちょっとつかみかねますが、
元の表現をそのまま使わせていただきます。

外側のexeから実行したときのカレントディレクトリと
デバッグで実行したときではカレントディレクトリが違います。
だから外側から実行したときはiniファイルが見つからず、落ちるのでしょう。

Open()で飛んでくるExeptionで理由を調べれば一発かな。
そこまでしなくても、戻り値くらいはチェックすべきかも。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

まず、GetProfileStringから取得したファイルのパス名が空で無いかの
判定をするべきでしょう。空のファイル名で開こうとしても無意味ですから。

次にfile.Openの戻り値をキチンと判定しましょう。
オープンできていないのにfile.GetLength();は使えないのでは?

基本的にエラーが起こりうる関数呼び出しに関しては
必ずエラー判定をして正常に呼び出せた時とエラーだった時で
処理を切り分けるようにしないとだめですよ。
エラーチェックをキチンとすることでどこに問題があるのかが
はっきりしてデバッグもやりやすくなります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました