Библиотека программиста

27.11.2024 - Определение установленных логических дисков

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

Опубликовано на сайте: http://www.coders-library.ru
Прямая ссылка: http://www.coders-library.ru/index.php?name=news&op=view&id=53