Как проверить готовность диска без появления ошибки?

Delphi FAQ >> Система

Иногда требуется проверить готовность диска, перед обращением к нему. При этом если сделать это «в лоб» — возникнет сообщение об ошибке. Поэтому сначала бывает полезным изменить режим отображения ошибок, а только потом проверять готовность диска. Вот готовая функция на языке программирования Delphi, которая по букве диска проверяет его готовность:

//проверяет готовность диска по его букве (aDrive)
function TestDrive(aDrive: Char): Boolean;
var
  ErrorModeBuf: Word;
  DirectoryBuf: String;
begin
  ErrorModeBuf := SetErrorMode(Windows.SEM_NOOPENFILEERRORBOX);
  GetDir(0, DirectoryBuf);
  //берем на себя контроль ошибок ввода\вывода
  {$I-}
    //пытаемся перейти в корень проверяемого диска
    ChDir(aDrive + ':\');
  {$I+}
  //если возникла ошибка, то диск не готов
  if (IoResult <> 0) then
    Result := False
  else
    //иначе - готов
    Result := True;
  //возвращаемся к предыдущей директории
  ChDir(DirectoryBuf);
  //устанавливаем запомненный режим ошибок
  SetErrorMode(ErrorModeBuf);
end;


Всегда хочется выглядеть красивой и стильной. Немалую роль в этом могут играть украшения. Но не всегда хватает средств на элитную бижутерию, но ведь и не вся модная бижутерия стоит дорого, так что часто можно обойтись и более дешевыми вариантами.