Как определить, какие диски находятся на компьютере
- Чем отличается джентльмен от джентльмена программиста?
- Джентльмен всегда носит с собой презерватив, на всякий случай, а джентльмен программист - системную дискету.
function DriveExists(Drive:Byte):Boolean;
var
Drives: setof 0..25;
begin
integer(Drives):=GetLogicalDrives;
Result:=Drive in Drives
end;
function CheckDriveType(Drive: Byte): string;
var
DriveLetter: Char;
DriveType: UInt;
begin
DriveLetter:=Chr(Drive + $41);
DriveType:=GetDriveType(PChar(DriveLetter + ':\'));
case DriveType of
0: Result:='?';
1: Result:='Path does not exists';
DRIVE_REMOVABLE: Result:='Removable';
DRIVE_FIXED: Result:='Fixed';
DRIVE_REMOTE: Result:='Remote';
DRIVE_CDROM: Result:='CD_ROM';
DRIVE_RAMDISK: Result:='RAMDISK'
else
Result:='Unknown'
endend;
Программный код на Delphi!
Для определения присутствующих дисков на компьютере можно использовать функцию GetLogicalDrives, которая возвращает множество номеров дискет, соответствующих логическим дискам (например, C:, D:, E:, и т.д.) на системе. Код, предоставленный здесь, использует эту функцию в процедуре DriveExists.
Вот как это работает:
Процедура DriveExists принимает параметр Drive, представляющий номер дискеты (0-25).
Процедура инициализирует целочисленную переменную Drives для хранения результата вызова функции GetLogicalDrives. Функция возвращает множество, содержащее все логические номера дискет.
Затем процедура проверяет, является ли указанный Drive элементом множества Drives с помощью оператора in. Если это так, процедура устанавливает переменную Result в значение True, указывая, что диск существует.
Вторая функция, CheckDriveType, принимает параметр Drive и возвращает строку, описывающую тип диска, связанный с этим диском. Вот, что она делает:
Она конвертирует номер дискеты в символ, используя код ASCII для символа 'A' (41) плюс номер дискеты (Chr(Drive + $41)).
Затем функция вызывает GetDriveType с полученным символом и двоеточием (':\' ) для создания пути к файлу.
Функция использует оператор case для определения типа диска, связанного с этим диском, на основе возвращаемого значения из GetDriveType. Возможные типы дисков:
0: Неизвестный или недопустимый
1: Путь не существует (например, пустая папка)
DRIVE_REMOVABLE: Удаляемый диск (например, флоппи-диск, USB-накопитель)
DRIVE_FIXED: Фиксированный диск (например, жесткий диск)
DRIVE_REMOTE: Дальний диск (например, сеть-сохранение)
DRIVE_CDROM: CD-ROM
DRIVE_RAMDISK: RAM-диск
Если тип диска не является одним из этих значений, функция возвращает 'Unknown'.
Вот ваше шутливое вопрос о различии между "джентльменом" и "программистом-джентльменом". Я думаю, вы пokes fun на стереотип, что программисты часто видятся как introverted или социально неуверенные. Шутка в том, что традиционный "джентльмен" может носить презерватив (противозачаточное средство) для личных целей, а программист-джентльмен вместо этого будет носить системный дискет!
Статья описывает программные функции, которые позволяют определить, какие диски находятся на компьютере и тип этих дисков (фиксированный, removable, CD-ROM и т.д.).
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.