
- •5.5.2. Стандартные функции для данных типа char
- •5.5.3. Определение переменных строкового типа. Особенности типа string
- •5.5.4. Строковые выражения
- •5.5.5. Строковые процедуры и функции
- •5.6. Пример программы
- •5.7. Варианты заданий
- •5.8. Содержание отчета (см. П. 1.10)
- •5.9. Контрольные вопросы
- •6.4. Порядок выполнения работы
- •5. Устно ответить на контрольные вопросы (п.6.9).
- •6. Оформить отчет (см. П. 1.10).
- •6.5. Справки по структуре и операторам Pascal-программы, использующей пользовательские процедуры и функции
- •6.5.1. Описание процедуры. Оператор процедуры
- •Структура описания процедуры
- •6.5.2. Описание функции. Указатель функции
- •6.5.3. Локализация имен в Turbo Pascal
- •6.6. Варианты заданий
- •6.7. Содержание отчета (см. П. 1.10)
- •6.8. Контрольные вопросы
- •5. Устно ответить на контрольные вопросы (п. 7.9).
- •6. Оформить отчет (см. П. 1.10).
- •7.5. Справки по файловым процедурам и функциям
- •7.5.1. Описание файловых переменных
- •7.5.2. Установочные и завершающие операции с файлами
- •7.5.3. Операции ввода-вывода
- •7.5.4. Операции перемещения по файлу, определение параметров файла
- •7.5.5. Обработка ошибок ввода-вывода
- •7.5.6. Текстовые файлы
- •7.6. Пример структуры программы
- •7.7. Варианты заданий
- •7.8. Содержание отчета (см. П. 1.10)
- •7.9. Контрольные вопросы
- •Основная литература
- •Дополнительная литература
- •Приложение. Титульный лист
- •Отчет о лабораторных работах по дисциплине «Информатика и программирование»
7.5.5. Обработка ошибок ввода-вывода
В программе на языке Turbo Pascal установлены следующие правила обработки ошибочных ситуаций, связанных с вводом-выводом. По умолчанию при выполнении любой такой операции автоматически производится проверка на возникновение ошибки. При обнаружении ошибки выполнение программы прекращается, а на экран дисплея выводится краткое диагностическое сообщение, содержащее условный номер ошибки.
Имеется возможность предусмотреть собственную реакцию на ошибочные ситуации в самой программе. Для этого необходимо в начале «опасного» фрагмента программы отключить автоматическую проверку на возникновение ошибки. Это делается внесением директивы компилятора {$1-}. В этом случае возникновение ошибки при выполнении программы не будет приводить к немедленному ее завершению; вместо этого код ошибки (отличный от нуля) будет сохранен системой. Посредством стандартной функции IoResult без параметров можно получить этот код и построить дальнейшие действия в зависимости от его значения, например, вывести краткое сообщение об ошибке (без указания причины ошибки):
..........
Assign (F, ‘c:\myfile’ );
{$I-} { отключение автоматического контроля }
Reset (F);
($I+) { включение автоматического контроля }
if loResult <> 0 then { возникла ошибка! }
begin
Writeln(‘Ошибка при открытии файла для чтения’);
Writeln(‘Работа будет закончена.’);
Writeln;
Writeln(‘Нажмите Enter ...’);
Readln;
Exit {Выход из процедуры}
end;
При использовании функции IoResult нужно знать, что если отключен режим автоматического контроля ({$I-}), то после возникновения ошибки все последующие операции с любым файлом будут игнорироваться, пока не произойдет обращение к функции IoResult. Поэтому необходимо выполнить вызов функции и анализ кода ошибки сразу после выполнения операции, связанной с файлом.
При необходимости можно провести более детальный (расширенный) анализ кода ошибки, например:
Assign (F, ‘ с: \myfile ‘ );
{$1-} { отключаем автоматический контроль }
Reset (F);
Code :=IoResult; { получили код результата }
if Code <> 0 then
begin { возникла ошибка! }
Write(‘ Ошибка при открытии файла: ‘);
саsе Code of
1 : Writeln (‘Файл не найден’);
3 : Writeln (‘Маршрут не найден’);
4 : Writeln (‘Слишком много открытых файлов’);
5 : Writeln (‘Доступ к файлу запрещен’);
12 : Writeln (‘Некорректный код доступа к файлам’)
else
Writeln(‘Неизвестный код ошибки’);
end
end;
{$I+) ( включаем автоматический контроль }
................
7.5.6. Текстовые файлы
Содержимое текстового файла рассматривается как последовательность символьных строк переменной длины, разделенных специальной комбинацией кодов, «конец строки» (13 или 0Dh), «перевод строки» (10 или 0Ah). Текстовый файл завершается специальным кодом «конец файла» (26 или 1Ah).
Представителем текстового файла в Pascal-программе является переменная файлового типа, которая должна быть описана с указанием стандартного типа text; например,
var MyText : text;
Для текстовых файлов применимы вышеопределенные начальные и завершающие операции (Assign, Reset, Rewrite, Flush, Close).
Текстовый файл может быть открыт для дополнения с помощью процедуры Append (F); эта процедура открывает файл для записи, но не очищает его, а устанавливает текущий указатель файла за последней записью.
Для записи в текстовый файл и чтения из него используются процедуры ReadLn и WriteLn. Эти процедуры осуществляют те же действия, что и соответствующие процедуры Read и Write, но после операций чтения и записи производят переход к следующей строке текстового файла.
Для контроля за окончанием текстового файла можно использовать функцию EOF.
Функция SeekEoLn(F) производит поиск конца текущей строки. Она пропускает все символы-разделители значений в строке (пробелы и табуляции) и устанавливает текущий указатель файла либо на конце строки (и тогда возвращает true), либо на первом значащем символе.
Функция SeekEoF(F) осуществляет поиск конца файла и действует аналогично функции SeekEoLn, но кроме символов-разделителей она пропускает символы концов строк (то есть переходит со строки на строку) в поисках кода конца файла. Если код 1Ah найден, то функция возвращает true, в противном случае – false.