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

Проверить, вставлен ли диск

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

Проверить, вставлен ли диск

Сын звонит отцу на работу:
- Папа, что значит "HDD format completed".
- А это, сынок значит, что к вечеру ты - труп!!!


function DiskInDrive(Drive: Char): Boolean; 
  // Disk can be a floppy, CD-ROM,... 
var 
  ErrorMode: Word; 
begin 
  { make it upper case } 
  if Drive in ['a'..'z'] then Dec(Drive, $20); 
  { make sure it's a letter } 
  if not (Drive in ['A'..'Z']) then 
    raise EConvertError.Create('Not a valid drive ID'); 
  { turn off critical errors } 
  ErrorMode := SetErrorMode(SEM_FailCriticalErrors); 
  try 
    { drive 1 = a, 2 = b, 3 = c, etc. } 
    if DiskSize(Ord(Drive) - $40) = -1 then 
      Result := False 
    else 
      Result := True; 
  finally 
    { Restore old error mode } 
    SetErrorMode(ErrorMode); 
  end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if DiskInDrive('a') = False then 
    ShowMessage('Drive not ready'); 
end;

Программирование на Delphi!

Код предназначен для проверки, вставлен ли диск в накопитель. В частности, он проверяет, есть ли диск в защищенном флоппи-диске (default floppy disk drive) под буквой "A".

Разбивка кода:

  1. Функция DiskInDrive принимает параметр Drive, представляющий букву накопителя (например, 'a', 'b' и т.д.). Она возвращает булевое значение, указывающее, есть ли диск в этом накопителе.
  2. Внутри функции:
    • Конвертирует входной параметр Drive в верхний регистр с помощью Dec.
    • Проверяет, является ли полученная буква действительной буквой накопителя (A-Z) с помощью проверки диапазона (in ['A'..'Z']). Если нет, то функция выбрасывает ошибку.
    • Устанавливает режим ошибок в ignore critical errors с помощью SetErrorMode(SEM_FailCriticalErrors). Это позволяет функции продолжать выполнение даже если возникнет ошибка.
    • Использует функцию DiskSize (не показанная в этом коде) для определения размера диска в указанном накопителе. Если результат равен -1, то это означает, что нет диска, и функция возвращает False.
  3. Обработчик события Button1Click вызывает функцию DiskInDrive с параметром 'a' (default floppy disk drive). Если результат равен False, то он отображает сообщение об ошибке "Drive not ready".

Альтернативное решение: Если вы хотите проверять другие типы дисков (например, CD-ROM, USB-диски), можно модифицировать функцию для использования более надежного метода определения наличия диска. Например, можно использовать Windows API-функции GetDiskFreeSpace или FindFirstFile для проверки наличия диска.

Обновленная версия обработчика события Button1Click, использующая функцию GetDiskFreeSpace:

procedure TForm1.Button1Click(Sender: TObject);
var
  Drive: Char;
begin
  Drive := 'a'; // или любая другая буква накопителя, которую вы хотите проверить
  if not GetDiskFreeSpace(PChar(Drive + ':'), nil, 0) then
    ShowMessage('Drive not ready');
end;

Код проверяет свободное пространство на указанном накопителе и отображает сообщение об ошибке, если нет диска. Обратите внимание, что эта функция доступна только на платформах Windows.

Статья описывает программный код на языке Pascal, который проверяет, вставлен ли диск в компьютер, и выводит сообщение об ошибке если диск не готов для использования.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:13:00/0.005634069442749/1