Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Cуществует ли диск в системе

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

Cуществует ли диск в системе

Автор: Serious
WEB-сайт: http://forum.vingrad.ru

function DriveExists(Drive: Byte): boolean;
begin
  Result := Boolean(GetLogicalDrives and (1 shl Drive));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Drive: byte;
begin
  for Drive := 0 to 25 do
    if DriveExists(Drive) then
      ListBox1.Items.Add(Chr(Drive + $41));
end;

Here's the translation of the content into Russian:

Код, предоставленный ниже, проверяет существование определенного диска в системе и выводит список всех существующих дисков в списке.

Функция DriveExists

Эта функция принимает целочисленное параметр Drive (представляющий букву диска) и возвращает булевое значение, указывающее, существует ли данный диск или нет. Функция использует API-функцию GetLogicalDrives, чтобы получить информацию о всех логических дисках в системе, а затем сдвигает результат на величину параметра Drive, чтобы проверить, соответствует ли он какой-либо из букв диска.

Процедура Button1Click

Эта процедура вызывается при клике кнопки на форме (TForm1). Она проходит через все возможные буквы дисков (от 0 до 25) с помощью цикла for. Для каждой буквы диска она вызывает функцию DriveExists, чтобы проверить, существует ли данный диск. Если он существует, она добавляет соответствующую верхний регистр букву диска (например, "A" для диска 0) в список (ListBox1) с помощью метода Add.

Альтернативное решение

Если вы хотите более читаемый и эффективный способ достижения этого, рассмотрите использование массива строк или TStringList для хранения букв дисков вместо цикла по отдельным байтам. Например:

procedure TForm1.Button1Click(Sender: TObject);
var
  Drives: TStringList;
begin
  Drives := TStringList.Create();
  try
    for Drive := 'A' to 'Z' do
      if DriveExists(Ord(Drive) - Ord('A')) then
        Drives.Add(Drive);
    ListBox1.Items.Assign(Drives);
  finally
    Drives.Free;
  end;
end;

Код создает объект TStringList, проходит через буквы дисков с помощью простого цикла по строкам и добавляет каждый существующий диск в список. Наконец, он присваивает список дисков списку.

Обратите внимание, что я использовал функцию Ord, чтобы преобразовать верхний регистр букву диска (например, "A") в ее соответствующее кодовое значение ASCII (65), которое затем можно вычесть из кодового значения 'A' (64) для получения номера диска. Функция DriveExists не нужна в этом альтернативном решении, поскольку мы используем более прямой подход.

Статья описывает функцию на языке Delphi, которая проверяет существование дискеты в системе и выводит список доступных дисков в списке элементов.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 18:47:27/0.0058090686798096/2