Доступ к флоппи диску в приложениях Delphi |
![]() |
![]() |
Статьи |
![]() Даже сегодня возникают ситуации, когда необходимо получить доступ к флоппи диску и работать с ним. SetErrorMode. Функция SetErrorMode WinAPI Windows управляет тем, как операционная система обрабатывает некоторые типы серьезных ошибок. Когда установлена SEM_FAILCRITICALERRORS, операционная система не выводит окно критических ошибок, когда такое происходит. Вместо этого, операционная система отправляет сообщение об ошибке в вызывающий процесс. Функция DiskSize возвращает размер диска в байтах. Диск при этом указывается так: 0 – текущий, 1 = A, 2 = B и т.д. ФункцияDiskSize возвращает -1, если номер диска является недопустимым. Пример выполнения функции DiskSize:
Функция DiskFree возвращает количество свободных байт на указанном номере диска. Нумерация дисков ведется так же, как и в функции DiskSize. Функция SHFormatDrive не отображена в справочном файле и нигде не объявлена в Delphi. Так что мы должны объявить эту функцию в модуле Shell32.dll. Это обеспечит нам доступ к диалоговому окну форматирования. Для объявления функции из DLL, нужно добавить зарезервированное слово external и имя DLL в конце перечисления процедур или функций. Так же нужно добавить sdtcall, так как мы используем WIN32 API DLL. Формат написания будет такой:
Есть ли диск в дисководе?Прежде, чем выполнять операции с диском, нужно проверить, есть ли диск в дисководе. Если диск в дисководе отсутствует, нужно вывести сообщение об этом, а не доверяться стандартным средствам Windows о критических ошибках.
Свободное место на дискеЕсли нужно что-то записать на диск, то желательно проверить свободное место на диске. Сделать это можно так:
ФорматированиеВ этом случае мы будем форматировать диск, используя стандартное окно форматирования Windows. Но можно использовать и DOS форматирование. Прежде всего добавьте ShellApi в раздел uses формы.
ЗаключениеИногда приходится форматировать и дискеты. Эта статья поможет Вам в поисках правильного решения. Все это не так сложно, как кажется на первый взгляд. |