- У моей бабупи до сих пор лежит Евангелие 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 dobegin{$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, что диск недоступен, и удаляет его из комбобокса.
Вот некоторые улучшения:
Код использует директивы $I- и $I+, чтобы отключить/включить синтаксис Intel для блока кода. Это можно удалить, потому что Delphi поддерживает обеIntel и AT&T синтаксис.
Функция GetDir используется для получения текущего каталога, но это не необходимо в этом случае, поскольку мы используем функцию ChDir, чтобы изменить каталог.
Функция IoResult возвращает системный код ошибки, который можно проверять с помощью функции Win32.CheckLastWSError или других механизмов обработки ошибок.
Вот альтернативное решение:
procedureTForm1.FormCreate(Sender:TObject);vari:integer;beginfori:=0toDriveComboBox1.Items.Count-1dobegintryChDir(DriveComboBox1.Items[i][1]+':\');ifDirectoryExists(GetCurrentDirectory)thenDriveComboBox1.Items.Delete(i)elseinc(i);except// обработка ошибок здесь, например, отображение сообщения или логирование ошибки// ...end;end;end;
Код использует блок try-except, чтобы поймать любые исключения, возникающие при попытке изменить каталог. Если изменение директории не удается, код assumes, что диск недоступен и удаляет его из комбобокса.
Обратите внимание: это код предполагает, что дисковые устройства уже перечислены в комбобоксе. Если вы хотите динамически заполнить комбобокс доступными дисками, вам нужно добавить дополнительный код для перебора дисковых устройств и добавления их в комбобокс.
В статье описывается создание программы на Delphi, которая удаляет недоступные дискеты из списка доступных дисков в комбобоксе.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.