お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"FD等が挿入されているかエラーを出さずに知る"



こんにちは、ごんたです。

フロッピードライブにFDが挿入されているか確認する方法で
DiskSizeや、SetCurrentDir などでチェックを行なうとWin95では
エラー表示しないで知ることができますが、WinNTの場合は、システム側で
勝手に「中止」「再試行」「無視」のダイアログが出てしまいます。

そこで、Win95, WinNTどちらでもエラー表示がされないで内部的に挿入されて
いるかを確認する関数を用意してみました。

========================================================================
function IsDriveReady(const Drive: String): Boolean;
// 指定のドライブが利用可能か(ディスクが挿入されているか)調べる
var
  cVol: array[0..15]of Char;
  CompLen, FileSys: DWORD;
  sDrv: String;
begin
  sDrv := Copy(Drive, 1, 1) + ':\';
  Result := GetVolumeInformation(PChar(sDrv), PChar(@cVol[0]),
                                     15, nil, CompLen, FileSys, nil, 0);
end;
========================================================================

ボリュームラベルを知るWinAPI関数 GetVolumeInformation を使うと
勝手に表示されることがないようです。

使い方は、

if IsDriveReady('A:') then begin
  // ディスクが挿入されている
end else begin
  // ディスクが挿入されていないか、エラー
end;

という感じです。
引数は、1文字目の半角英字ドライブだけをチェックしていますので、
何かのディレクトリでもフルパスのファイル名でも構いません。

by ごんた


Original document by ごんた          氏 ID:(LED04354)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum