
- •Файловая система и файловый ввод-вывод
- •Краткие теоретические сведения
- •Разбиение на разделы
- •Определение имеющихся логических дисков
- •1.3 Получение информации о томах
- •Поиск файлов
- •1.5.1 Отложенный (асинхронный) ввод-вывод
- •1.5.2 Контроль ошибок ввода-вывода
- •Методика выполнения
- •Отчет о работе
- •Контрольные вопросы
- •Получение информации об exe-файлах ms Windows
1.5.2 Контроль ошибок ввода-вывода
При работе с файлами необходимо предусмотреть обработку возможных ошибок. Практика показывает, что именно операции ввода-вывода вызывают большую часть ошибок, возникающих в приложении. Контроль за ошибками ввода-вывода зависит от применяемых функций. Все функции Win32 API возвращают код шибки, который нужно проанализировать.
При возникновении ошибок ввода-вывода в функциях, работающих с файловыми переменными, генерируется исключительная ситуация класса InOutError. Но так происходит только в том случае, если включен контроль ошибок ввода-вывода. Для этого предусмотрены соответствующие директивы компилятора:
{$I+} - контроль включен (установлена по умолчанию);
{$I-} - контроль отключен.
Класс EInOutError имеет поле Errorcode. При возникновении этой исключительной ситуации можно получить его значение и принять решение. Некоторые значения кода ошибки:
– файл не найден;
– неверное имя файла;
– слишком много открытых файлов;
– доступ запрещен;
100 – достигнут конец файла;
101 – диск переполнен;
106 – ошибка ввода.
Методика выполнения
Задание 1. Разработать приложение для вывода:
полной информации о логических томах компьютера, на котором выполняется лабораторная работа
информации о возможностях файловой системы, используемой на каждом разделе
количества файлов указанного в окне редактирования типа, хранящихся на указанном диске
информации об EXE-файле, имя которого выбирается пользователем в диалоговом окне. Для этого попробовать установить компонент gsFileVersionInfo, текст которого приведен в приложении. Для установки компонента находящийся в приложении текст скопировать, преобразовать в текстовое представление и сохранить с расширением pas. При невозможности установки использовать в приложении функции Win32 из компонента.
На форму поместить компоненты OpenDialog, gsFileVersionInfo (если он установлен) и 9 компонентов Label. Проверить работу приложения. При необходимости внести коррективы в текст используемого компонента.
Задание 2. Разработать приложение для формирования двоичного файла, содержащего 10000 целых положительных чисел от 1 до 10000.
Полученный файл прочитать, используя асинхронный ввод, найти все простые числа и вывести результаты в тестовый файл, используя асинхронный вывод.
Задание 3. Разработать приложение, наглядно демонстрирующее преимущество (сокращение времени обработки информации) при использовании асинхронного ввода-вывода. Содержательную часть (предметную область) выбрать самостоятельно.
Отчет о работе
Должен содержать описание алгоритмов и функций, реализующих задания 1 – 3 и результаты выполнения заданий.
Полученные результаты задания 1 должны быть оформлены в форме таблицы, включающей количественные характеристики дискового пространства каждого логического раздела, полученные с помощью разработанного приложения и соответствующие данные, выдаваемые ОС - полная емкость и размер свободного пространства на каждом логическом разделе.
Полученные результаты задания 3 должны содержать оценки времени обработки информации по выбранному алгоритму при использовании обычного и асинхронного ввода-вывода.