Название этой функции является сложносокращенным словом от end of file. Значение этой функции имеет значение true, если конец файла уже достигнут, т.е. указатель стоит на позиции, следующей за последней компонентой файла. В противном случае значение функции – false.
Изменение имени файла в Паскале
Rename(<имя_ф_переменной>, <новое_имя_файла>);
Уничтожение файла в Паскале
Erase(<имя_ф_переменной>);
Уничтожение части файла от текущей позиции указателя до конца в Паскале
Truncate(<имя_ф_переменной>);
Файл Паскаля может быть открыт для добавления записей в конец файла
Append(<имя_ф_переменной>);
Пример процедуры Assign Паскаля
Program primer; Var f1,f2:text; I,n: integer; S: string; Begin {формируем первый файл} Assign(f1, ‘file1.txt’); {устанавливаем связь файловой переменной с физическим файлом на диске} Rewrite(f1); {открываем файл для записи} Readln(n) {определим количество вводимых строк} for i:=1 to n do begin readln(s); {вводим с клавиатуры строки} writeln(f1,s); {записываем последовательно строки в файл} end; close(f1); {заканчиваем работу с первым файлом, теперь на диске существует файл с именем file1.txt, содержащий введенные нами строки. На этом программу можно закончить, работу с файлом можно продолжить в другой программе, в другое время, но мы продолжим}
{часть вторая: чтение из первого файла и формирование второго} Reset(f1); {открываем первый файл для чтения} Assign(f2, ‘file2.txt’); {устанавливаем связь второй файловой переменной с физическим файлом} Rewrite(f2); {открываем второй файл для записи}
{Дальше необходимо последовательно считывать строки из первого файла, проверять выполнение условия и записывать нужные строки во второй файл. Для чтения из текстового файла рекомендуется использовать цикл по условию «пока не конец файла»} While not eof(f1) do Begin Readln(f1,s);{считываем очередную строку из первого файла} If (s[1]=’A’) or (s[1]=’a’) then Writeln(f2,s); {записываем во второй файл строки, удовлетворяющие условию} End; Close(f1,f2); {заканчиваем работу с файлами}
{часть третья: выводим на экран второй файл} Writeln; Writeln(‘Второй файл содержит строки:’); Reset(f2); {открываем второй файл для чтения} While not eof(f2) do {пока не конец второго файла} Begin Readln(f2,s);{считываем очередную строку из второго файла} Writeln(s); {выводим строку на экран} End; End.
ПРИМЕР:
Информация об авиарейсах содержит следующие данные:
Наименование пункта назначения, номер рейса, время вылета (часы и минуты), цену билета.
Написать программу, в которой:
обеспечить ввод данных с клавиатуры и сохранение их в типизированном файле;
организовать выборку из типизированного файла информации о рейсах с ценой билета больше средней, в заданный пункт назначения, вывод данных о них на экран и сохранение в текстовом файле.
Write (‘Ввод закончен? (Enter – да, Esc – нет) ’);
Until Readkey =#13;
End;
Clrscr;
Reset (f);
Write (‘Введите пункт назначения: ’); readln (р);
While not EOF(F) do
Begin
Read (F,d);
If d.p= p then
Begin
i:= i+1;
s:=s+d.s;
End;
End;
If i<> 0 then s:=s / i else
Begin
Writeln(‘ Результат ’);
Writeln(‘ -------------------- ’);
Writeln(‘ По вашему запросу ничего не найдено!’);
goto exit;
end;
reset(F);
writeln(‘Результат:’);
witeln(‘ --- ’);
While not EOF(F) do
Begin
Read (f, d);
If (d.s > s) and (d. p= p) then
Begin
Write (‘Пункт назнач.: ______ ’, d. p);
Write (‘Номер рейса: ________ ’, d. n);
Write (‘Время (часы_минуты):___ ’, d. c, ‘ ‘, d. m);
Write (‘Цена билета: _________ ’, d. s:0:2);
Witeln(‘ ---’);
End;
End;
Exit;
close(f);
readkey;
end.
В результате работы программы на дисплей будет выведено соответствующее сообщение: «Хотите заново ввести данные? (Enter – да, Esc – нет)» и в зависимости от ответа на это сообщение произойдет либо вывод результата, либо пользователь заново будет набирать исходные данные.