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

Получить букву или номер CD-ROM

Delphi , Файловая система , CD-ROM

Получить букву или номер CD-ROM

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

function GetFirstCDROMDrive: char;
 var
   drivemap, mask: DWORD;
   i: integer;
   root: string;
 begin
   Result := #0;
   root := 'A:\';
   drivemap := GetLogicalDrives;
   mask := 1;
   for i := 1 to 32 do
   begin
     if (mask and drivemap) <> 0 then
       if GetDriveType(PChar(root)) = DRIVE_CDROM then
       begin
         Result := root[1];
         Break;
       end;
     mask := mask shl 1;
     Inc(root[1]);
   end;
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
   ShowMessage(GetFirstCDROMDrive);
 end;

 {********************************}

 function GetNumberOfCDDrives: Byte;
 var
   drivemap, mask: DWORD;
   i: integer;
   root: string;
 begin
   Result := 0;
   root := 'A:\';
   drivemap := GetLogicalDrives;
   mask := 1;
   for i := 1 to 32 do
   begin
     if (mask and drivemap) <> 0 then
       if GetDriveType(PChar(root)) = DRIVE_CDROM then
       begin
         Inc(Result);
       end;
     mask := mask shl 1;
     Inc(root[1]);
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Label1.Caption := IntToStr(GetNumCDDrives);
 end;

Программа на Delphi, которая извлекает первый доступный привод CD-ROM и считает общее количество привода CD-ROM на системе.

Вот разбивка функций:

GetFirstCDROMDrive: Функция возвращает букву или номер первого доступного привода CD-ROM. Она делает это, перебирая все возможные буквы привода от 'A' до 'Z' (или до 32, whichever comes first), проверяет каждый привод на CD-ROM с помощью функции GetDriveType, и возвращает первый, который она находит.

GetNumberOfCDDrives: Функция возвращает общее количество привода CD-ROM на системе. Она делает это, перебирая все возможные буквы привода от 'A' до 'Z' (или до 32, whichever comes first), проверяет каждый привод на CD-ROM с помощью функции GetDriveType, и увеличивает счетчик для каждого, который она находит.

Два процедуры (Button2Click и Button1Click) - это обработчики событий кнопок на форме. Когда вторая кнопка нажата, она отображает сообщение с буквой или номером первого доступного привода CD-ROM. Когда первая кнопка нажата, она обновляет метку на форме для отображения общего количества привода CD-ROM.

Вот пример модификации кода:

Вместо использования GetLogicalDrives и перебора всех возможных букв привода, вы могли использовать функцию EnumNetworkDrives, чтобы получить список всех сетевых привода, а затем фильтровать этот список только для CD-ROM привода. Это было бы более эффективно, если есть много сетевых привода.

Альтернативно, вместо проверки каждого типа привода индивидуально с помощью GetDriveType, вы могли использовать одиночный цикл для проверки каждого привода и увеличения счетчика для каждого, который является CD-ROM приводом. Это упрощало бы код и сделало его более простым в обслуживании.

Вот пример модификации кода:

function GetFirstCDROMDrive: char;
var
  drivelist, mask: DWORD;
  i, rootsize: integer;
  root: string;
begin
  Result := #0;
  root := 'A:\';
  drivelist := GetLogicalDrives;
  mask := 1;
  for i := 1 to 26 do // only iterate up to Z
  begin
    if (mask and drivelist) <> 0 then
      if IsCDROM(root) then
      begin
        Result := root[1];
        Break;
      end;
    mask := mask shl 1;
    Inc(root[1]);
  end;
end;

function GetNumberOfCDDrives: Byte;
var
  drivelist, mask: DWORD;
  i, rootsize: integer;
  root: string;
begin
  Result := 0;
  root := 'A:\';
  drivelist := GetLogicalDrives;
  mask := 1;
  for i := 1 to 26 do // only iterate up to Z
  begin
    if (mask and drivelist) <> 0 then
      if IsCDROM(root) then
        Inc(Result);
    mask := mask shl 1;
    Inc(root[1]);
  end;
end;

function IsCDROM(drive: string): boolean;
begin
   // implement your own CD-ROM detection logic here
   // for example, you could check the drive type using GetDriveType
  Result := False; // default to not being a CD-ROM drive
end;

В этом коде используется одиночный цикл для перебора всех возможных букв привода и проверки каждого на CD-ROM привод с помощью отдельной функции IsCDROM. Это упрощает код и делает его более простым в обслуживании.

В статье описываются два функционаля: получение буквы или номера CD-ROM-диска и определение количества доступных CD-ROM-устройств на компьютере.


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

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




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


:: Главная :: CD-ROM ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-11 06:53:30/0.0064599514007568/0