Delphi Tips 
-----------------------------

0081  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/08 osamu 編集
「システムエラー 読み出せません ドライブ X:」ダイアログを回避する

Q:
Delphiで、フロッピーのようなリムーバブルメディアがちゃんとセットされているかを、「静かに」知る方法はないものでしょうか。FileExists関数を使っても、フロッピーの入っていないドライブを見に行くと、システムエラーダイアログが表示されてしまいます。

A:
Windows API の SetErrorMode を使用すればいいでしょう。
ここ一年使っているドライブのチェックルーチンはこんな感じです。
# WIN32の部分はまだあまり実績がないですけど...

function IsDriveReady(drive : char) : boolean;
var
  oldmode : word;
  searchrec : tSearchRec;
begin
  drive := upcase(drive);
  oldmode := SetErrorMode(SEM_FAILCRITICALERRORS);  (* ここと *)
  result := DiskSize(ord(drive)-$40) <> -1;
{$IFDEF WIN32}
  if result and (GetDriveType(pchar(drive+':\')) in [DRIVE_REMOTE, DRIVE_CDROM]) then begin
{$ELSE}
  if result and (GetDriveType(ord(drive)-$41) = DRIVE_REMOTE) then begin
{$ENDIF}
    result := FindFirst(drive+':\*.*',$3f, searchrec) = 0;
    FindClose(searchrec);
  end;
  SetErrorMode(oldmode);                            (* ここね *)
end;

http://slis.flet.mita.keio.ac.jp/~anakata/delphi/myfaq.html#Q12
にも載せてあります。
参照: [Delphi-ML:184] <Windows> <ダイアログ>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp