В приведенном ниже примере описано как можно получить список логических дисков, установленных в системе, а также определить их тип. Для этих целей используются функции
winAPI GetLogicalDrives и
GetDriveType .
Для работы примера на форму проекта поместите объекты Button1 и Memo1. В обработчике событий для Button1 нужно ввести указанный код.
Код procedure TForm1.Button1Click(Sender: TObject);
var x: int64;
bit, i: integer;
tp: Uint;
tip: string;
begin
// Вызываем функцию WinAPI
// Функция возвращает битовую маску установленных логических дисков.
// Бит 0 определяет наличие диска А:, бит 1 - диска B и т.д.
x:=GetLogicalDrives();
if x=0 then
memo1.Lines.Add('Функция GetLogicalDrives завершилась неудачей...')
else
begin
memo1.Lines.Add('Логические диски:');
// цикл по полученным битам переменной X
for i:=1 to 64 do
begin
// Накладываем битовую маску для выделения бита с поряковым номером 0
bit:=x and 1;
// нашли логический диск...
if bit=1 then
begin
// определяем тип логического диска
tp:=GetDriveType(PChar(chr(64+i)+':'));
tip:='';
if tp=0 then tip:='drive type cannot be determined';
if tp=1 then tip:='root directory does not exist';
if tp=DRIVE_REMOVABLE then tip:='removable';
if tp=DRIVE_FIXED then tip:='fixed';
if tp=DRIVE_REMOTE then tip:='remote (network)';
if tp=DRIVE_CDROM then tip:='CDROM';
if tp=DRIVE_RAMDISK then tip:='RAM disk';
// преобразуем счетчик в букву диска и выводим в Memo1
memo1.Lines.Add(' '+chr(64+i)+': '+tip);
end;
// побитовый сдвиг вправо
x:= x shr 1;
end;
end;
end;