「なでしこ」バグ&要望掲示板

なでしこのバグや実現して欲しい機能の要望を行う掲示板です。
[一覧へ] > (@420) [高] [確認待ち]
@420■ (#1311) 存在するドライブにディスクが入ってないとエラーが出る問題 - クジラ飛行机 (2009-11-08 10: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) // 元に戻す

//ここまで
~~~~~~~

(#1387) 直す - クジラ飛行机 (2009-12-29 06:04) /高 未処理
直す

(#1391) r216で修正 - クジラ飛行机 (2010-01-01 12:11) /高 確認待ち
-「存在」「ディスクサイズ」命令でFDDなどでディスクが存在しない時エラーが出るのを抑制(@420)(r217)。

(#1311)へ返信する:

名前
タイトル
本文
優先度
状態
確認キー お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。
編集キー 編集時に使うキーを入力(省略可能)
添付ファイル 画像ファイル(最大300KB)を添付可能