意図しない処理が行われて先に進みません。。。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
PonPon
記事: 7
登録日時: 4ヶ月前

意図しない処理が行われて先に進みません。。。

#1

投稿記事 by PonPon » 4ヶ月前

作成途中のソースファイルを一式添付しました。

mysys.c内の104行目

コード:

 else if(flag == PATH_VIEW)
から最後までの処理が意図しない動作になります。

初回起動時、既存の他アプリの絶対パスをデータベース(SQLite)に登録しています。
メニューからパスを編集できるダイアログを作成し、エディットボックス内に現在登録されている絶対パスを表示しています。
・エディットボックス内を変更することなく編集ボタンを押すと意図した通りの動作になってると思われます。
・エディットボックス内を変更して編集ボタンを押すとSQL側のエラーが戻ってきます。
・エディットボックス内を変更することなくダイアログを閉じ、再度開くと意図した通りの動作になります。
・エディットボックス内を変更して編集ボタンを押しSQL側のエラーの後、ダイアログを再度開くと別のSQLエラー文が戻ってきます。

質問は
・エディットボックス内を変更したときのしなかったときのSQL文は変わらないのになぜ変更したときはSQLでエラーを吐くのか?
・なぜエディットボックス内を変更したときとしなかったときでダイアログを開くときの動作が変わるのか?

以上2点の質問ですが、解決方法と出来ればなぜこのような動作になってしまったかの理由が知りたいです。
どうぞよろしくお願いします。
添付ファイル
sw_acc.zip
(618.34 KiB) ダウンロード数: 12 回

アバター
みけCAT
記事: 6235
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 意図しない処理が行われて先に進みません。。。

#2

投稿記事 by みけCAT » 4ヶ月前

手元の環境ではエラーを再現できませんでした。
具体的にどのようなエラーが戻ってくるのか教えていただけますか?
もしよろしければ、エディットボックス内をどう変更したかも教えてください。

ちなみに、sqlite3_errmsgに本来渡すべきと考えられるdbではなくhDllを渡しているのはなぜですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

PonPon
記事: 7
登録日時: 4ヶ月前

Re: 意図しない処理が行われて先に進みません。。。

#3

投稿記事 by PonPon » 4ヶ月前

みけCATさん、見ていただきありがとうございます。
再現できませんでしたか?
データベースに参照したファイルの絶対パスを書き込めたのでしょうか???

hDllを渡してたのはミスでした。ずっとコピペしてたので最初からのミスに気づきませんでした。
教えていただきありがとうございます。

さて、こちら側での動作ですが
・一番最初にパス編集ダイアログが作成されたときはエラーが出ない
・参照ボタンを押さずに編集ボタンを押すとエラーが出ない
・参照ボタンを押して他のファイルを選択し編集ボタンを押すとError 0007の場所でunable to open database fileとエラーが出る。
・上記エラーが出た後に再度編集ダイアログを作成するとError 0005の場所で同様にunable to open database fileとエラーが出る。
このようになります。

エディットボックス内をどう変更したかですが、どの実行ファイル(exe)を指定しても同様のエラーになります。

下に動作確認しているところを撮影してアップロードしました。
https://4.gigafile.nu/0717-dc27c588792f ... 62558c0a7f
DL PASS:57630

よろしくお願いします。

PonPon
記事: 7
登録日時: 4ヶ月前

Re: 意図しない処理が行われて先に進みません。。。

#4

投稿記事 by PonPon » 4ヶ月前

データベースが開けないとエラーに書いてあるので
エラーチェックをしていなかった
sqlite3_openのすぐ後ろに同様のエラーチェックを追加しました。

コード:

ret = sqlite3_open("SW_Info.db",&db);
if (ret != SQLITE_OK)
{
	MessageBox(hWnd, (LPCSTR)sqlite3_errmsg(db), (LPCSTR)"ERROR 0001", MB_OK);
	sqlite3_close(db);
	sqlite3_free(err);
	FreeLibrary(hDll);
	return FALSE;
}
するとやはり上記の動作をしたときはここでエラーが出てるようです。
なぜデータベースを開けなくなってしまっているのでしょうか?

返信

“C言語何でも質問掲示板” へ戻る