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

Только готовые дисководы

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

Только готовые дисководы

- У моей бабупи до сих пор лежит Евангелие 1804 года издания.
- Ух ты! Небось, еще на 5-дюймовых дискетах?


procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  OldErrorMode: Word;
  OldDirectory: string;
begin
  OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX);
  GetDir(0, OldDirectory);
  i := 0;
  while i <= DriveComboBox1.Items.Count - 1 do
  begin
    {$I-}
    ChDir(DriveComboBox1.Items[i][1] + ':\');
    {$I+}
    if IoResult 0 then
      DriveComboBox1.Items.Delete(i)
    else
      inc(i);
  end;
  ChDir(OldDirectory);
  SetErrorMode(OldErrorMode);
end;

Привет! Я перевёл текст на русский язык:

Это код Delphi, который создает форму с комбобоксом для списка доступных дисковых устройств. Код итерирует по элементам в комбобоксе, изменяет текущий каталог на корневой каталог каждого диска (например, "C:\"), и проверяет, была успешно изменена директория с помощью функции IoResult. Если изменение директории не удается, код assumes, что диск недоступен, и удаляет его из комбобокса.

Вот некоторые улучшения:

  1. Код использует директивы $I- и $I+, чтобы отключить/включить синтаксис Intel для блока кода. Это можно удалить, потому что Delphi поддерживает обеIntel и AT&T синтаксис.
  2. Функция GetDir используется для получения текущего каталога, но это не необходимо в этом случае, поскольку мы используем функцию ChDir, чтобы изменить каталог.
  3. Функция IoResult возвращает системный код ошибки, который можно проверять с помощью функции Win32.CheckLastWSError или других механизмов обработки ошибок.

Вот альтернативное решение:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to DriveComboBox1.Items.Count - 1 do
  begin
    try
      ChDir(DriveComboBox1.Items[i][1] + ':\' );
      if DirectoryExists(GetCurrentDirectory) then
        DriveComboBox1.Items.Delete(i)
      else
        inc(i);
    except
       // обработка ошибок здесь, например, отображение сообщения или логирование ошибки
       // ...
    end;
  end;
end;

Код использует блок try-except, чтобы поймать любые исключения, возникающие при попытке изменить каталог. Если изменение директории не удается, код assumes, что диск недоступен и удаляет его из комбобокса.

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

В статье описывается создание программы на Delphi, которая удаляет недоступные дискеты из списка доступных дисков в комбобоксе.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 05:15:04/0.0078129768371582/1