「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

@420■ (#1311) 存在するドライブにディスクが入ってないとエラーが出る問題 - クジラ飛行机 (2009-11-08 22:02) /中 未処理
99yenさんが、原因を特定してくれたので、これを組み込んで
エラーが出ないようにする。

[nadesiko-dev :447]より
~~~~~~~
エラーの発生条件がわかりました。フロッピーディスクドライブが存在してい
て、ディスクが入っていない場合に発生するようです。「ディスクサイズ」以外
にも「存在」や「起動」でも発生しました。
回避するには、Win32APIのSetErrorMode関数を使用し、致命的なエラーを抑制す
れば良いようです。
参考
http://oshiete.gogaku-ryugaku.net/qa260472.html
http://msdn.microsoft.com/ja-jp/library/cc428987.aspx
http://www.rinku.zaq.ne.jp/ultimate/tips/system/cor1.htm

//ここから

●SetErrorMode(uMode) =DLL("kernel32.dll","UINT SetErrorMode(UINT)")

// SetErrorModeの定数。SEM_FAILCRITICALERRORS = $1しか使いませんが…
!SEM_NORMAL = $0 // システム既定設定
!SEM_FAILCRITICALERRORS = $1 // 致命的エラーメッセージを非表示
!SEM_NOGPFAULTERRORBOX = $2 // 一般保護違反時のメッセージを非表示
!SEM_NOALIGNMENTFAULTEXCEPT = $4 // メモリ整列違反時のメッセージを非表示
!SEM_NOOPENFILEERRORBOX = $8000 // ファイルが存在しなかったときのメッ
セージを非表示

// SetErrorModeがないとエラーが発生する
// 致命的エラーメッセージを表示しない
SetErrorMode(SEM_FAILCRITICALERRORS)
「A:\」のディスクサイズを言う
「A:\」が存在を言う
SetErrorMode(SEM_NORMAL) // 元に戻す

//ここまで
~~~~~~~
存在するドライブにディスクが入ってない.. / クジラ飛行机 (2009-11-08 22:02) (#1311)/ 中 未処理
  直す / クジラ飛行机 (2009-12-29 18:04) (#1387)/ 高 未処理
  r216で修正 / クジラ飛行机 (2010-01-01 00:11) (#1391)/ 高 確認待ち
  解決 / U D (2010-12-17 02:07) (#1859)/ 高 解決

(#1311)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能