Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перечислить диски

Delphi , Файловая система , Диски

Перечислить диски

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Adds all fixed drives into Combobox1. 
  To enumerate another type of drive, 
  i.e all CD-ROMs just change the DRIVE_FIXED constant to DRIVE_CDROM. 

  Fugt all fixen Laufwerke in Combobox1 ein. 
  Um z.B alle CD-Rom Laufwerke zu ermitteln, 
  einfach DRIVE_CDROM anstatt die Konstante DRIVE_FIXED nehmen. 
}

 procedure List_Drives;
 const
   DRIVE_UNKNOWN = 0;
   DRIVE_NO_ROOT_DIR = 1;
   DRIVE_REMOVABLE = 2;
   DRIVE_FIXED = 3;
   DRIVE_REMOTE = 4;
   DRIVE_CDROM = 5;
   DRIVE_RAMDISK = 6;
 var
   r: LongWord;
   Drives: array[0..128] of char;
   pDrive: PChar;
 begin
   r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
   if r = 0 then Exit;
   if r > SizeOf(Drives) then
     raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
   pDrive := Drives;
   while pDrive^ <> #0 do
   begin
     if GetDriveType(pDrive) = DRIVE_FIXED then
       Form1.ComboBox1.Items.Add(pDrive);
     Inc(pDrive, 4);
   end;
 end;

Программный код на Delphi, который выводит список фиксированных дисков и добавляет их в комбобокс ComboBox1. Вот подробное описание кода:

Константы Код определяет несколько констант, связанных с типами дисков:

const
  DRIVE_UNKNOWN  = 0;
  DRIVE_NO_ROOT_DIR  = 1;
  DRIVE_REMOVABLE  = 2;
  DRIVE_FIXED  = 3;
  DRIVE_REMOTE  = 4;
  DRIVE_CDROM  = 5;
  DRIVE_RAMDISK  = 6;

Эти константы используются для идентификации типа диска (например, фиксированный, removable, CD-ROM).

Переменные Код объявляет две переменные:

var
  r: LongWord; // хранит результат функции GetLogicalDriveStrings()
  Drives: array[0..128] of char; // буфер для строк дисков
  pDrive: PChar; // указатель на строку диска

Процедура List_Drives Эта процедура отвечает за вывод списка фиксированных дисков и добавление их в ComboBox1. Вот что она делает:

  1. Вызывает функцию GetLogicalDriveStrings, чтобы получить список логических строк дисков:
r := GetLogicalDriveStrings(SizeOf(Drives), Drives);

Функция возвращает количество байт, записанных в буфер (Drives), или 0, если произошла ошибка. 2. Проверяет, если результат равен 0 (ошибка) и выходит из процедуры, если так:

if r = 0 then Exit;
  1. Проверяет, если результат больше размера буфера Drives (произошла ошибка памяти):
if r > SizeOf(Drives) then
  raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
  1. Инициализирует указатель на первую строку диска в буфере:
pDrive := Drives;
  1. Цикл проходит по каждой строке диска в буфере, пока не достигнет конца буфера (означается #0):
while pDrive^ <> #0 do
begin
   // ...
  Inc(pDrive, 4); // перемещает указатель на следующую строку диска
end;
  1. Внутри цикла проверяет, если текущий диск является фиксированным диском (используя функцию GetDriveType):
if GetDriveType(pDrive) = DRIVE_FIXED then
  Form1.ComboBox1.Items.Add(pDrive);

Если это фиксированный диск, добавляет его в ComboBox1.

Замечания

  • Код использует функцию GetLogicalDriveStrings, чтобы получить список логических строк дисков. Это часть Windows API.
  • Функция GetDriveType используется для определения типа каждого диска (например, фиксированный, removable, CD-ROM).
  • Код предполагает, что ComboBox1 является валидным компонентом комбобокса на форме (Form1).

В статье описывается процедура List_Drives на языке Delphi, которая перечисляет все фиксированные диски в ComboBox1 и позволяет изменить тип перечисляемых дисков, например, для CD-ROM.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диски ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 04:34:37/0.0059921741485596/0