В приведенном ниже примере описано как можно получить список логических
дисков, установленных в системе, а также определить их тип. Для этих
целей используются функции 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;
|