システムで有効なドライブを列挙したいと思います。
目次
ユニットファイル
uses Windows;
(Win32API 使います
処理
procedure TForm1.FormCreate(Sender: TObject);
var
LogDrives : Cardinal;
i : Integer;
DriveName : String;
begin
LogDrives := GetLogicalDrives; //有効なドライブの情報を取得
for i := 0 to 25 do //A→Zのループ
begin
if (LogDrives and (1 shl i)) <> 0 then
begin
DriveName := Char(Ord('A') +i) + ':\';
if GetDriveType(PChar(DriveName)) = DRIVE_REMOVABLE then
begin
Memo1.Lines.Add(DriveName); //メモに追加
end;
end;
end;
end;
参考
GetDriveTypeA function (fileapi.h) - Win32 apps | Microsoft Docs
[ 085_CR-ROM ドライブの検出とトレーの開閉 ] - Mr.XRAY
補充
GetDriveTypeの戻り値について
0 ドライブの種類が判定できない。または、RootPathNameの指定が誤っている。
1 指定されたドライブは存在しない。
DRIVE_REMOVABLE ドライブはリムーバブルディスク用。//USBなど
DRIVE_FIXED ドライブは固定ディスク用。//Cドライブ
DRIVE_REMOTE ネットワークドライブ。
DRIVE_CDROM CD-ROMドライブ。
DRIVE_RAMDISK RAMディスク。