Язык Pascal позволяет сохранить результаты работы программы в файл на диске компьютера.
Существует два метода доступа к информации, хранящейся в файлах:
последовательный доступ;
прямой доступ.
Файлы последовательного доступа наиболее просты как в организации, так и в работе с ними. Записи обрабатываются последовательно одна за другой. Подобные файлы легко просматриваются на экране, используя любой простейший редактор.
Формат:
Имя: file of <тип элемента>;
Например:
Res: file of char; {файл символов}
или
Res: text; {файл символов}
Koef: file of real; {файл вещественных чисел}
F: file of integer; {файл целых чисел}
Процедура assign связывает файловую переменную с конкретным файлом.
Формат:
Assign(<имя файловой переменной>,<имя файла>);
Имя файла может быть полным (указание пути к файлу и имени файла) или с указанием только имени файла.
Например:
Assign(f,’a:\result.txt’);
Fname:=’otcet.txt’;
Assign(f,fname);
Вывод в текстовый файл осуществляется при помощи процедур write и writeln.
Перед выводом в файл необходимо открыть файл. Возможны следующие режимы открытия файла для записи в него данных:
перезапись (запись нового файла поверх существующего или создание нового файла);
добавление в существующий файл.
Формат в режиме перезаписи:
Rewrite(<имя файловой переменной >);
Формат в режиме добавления:
Append(<имя файловой переменной >);
Например:
1.создание нового файла.
Var
F:text;
I:integer;
Begin
Assign(f,’test.txt’);
Rewrite(f); {открытие в режиме перезаписи}
For i:=1 to 5 do
Writeln(f,’Строка ’,i:2);
Close(f); {закрыть файл}
End.
В результате выполнения программы на диске появится файл с именем test.txt.
2. запись в файл в режиме добавления.
Var
F:text;
I:integer;
Begin
Assign(f,’test.txt’);
append(f); {открытие в режиме добавления}
For i:=6 to 8 do
Writeln(f,’Строка ’,i:2);
Close(f); {закрыть файл}
End.
Выяснить, завершилась ли успехом процедура открытия файла, можно, проверив значение функции IOResult (результат ввода/вывода). Функция IOResult() возвращает 0, если операция ввода/вывода завершилась успешно, в противном случае – не ноль. Однако чтобы программа могла проверить результат выполнения операции ввода/вывода, нужно разрешить ей это делать, добавив перед вызовом процедуры открытия файла строку {$I-}. После инструкции открытия файла следует поместить {$I+}.
Например:
Assign(f,’test.txt’);
{$I-}
Append(f); { открытие в режиме добавления }
{$I+}
If IOResult<>0 then {если файла нет}
rewrite(f); {создать новый}
Пример. Решение квадратного уравнения и вывод результатов в файл.
var
a,b,c,x1,x2:real; {Коэффициенты и корни уравнения}
d:real; {дискриминант}
f:text; {файл для вывода результатов работы программы}
i:integer;
begin
writeln('Введите значения коэффициентов в одной строке');