Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.10.3. Текстовые файлы

Текстовый файл представляет собой последовательность символов, разделенных на строки произвольной длины. В конце каждой строки находятся два особых символа: #13 #10, которые отделяют строку от следующей. Эти символы добавляются автоматически.

Для задания текстовых файлов имеется предопределенный тип TEXT, который эквивалентен файловому типу

FILE OF CHAR

Файловая переменная текстового типа задается предложением

VAR

имя: TEXT

Файловой переменной назначают имя файла при помощи процедуры ASSIGN. Дать пример

Текстовый файл можно открыть:

только для чтения — процедурой RESET (файловая_переменная);

только для записи — процедурами REWRITE (файловая_переменная);

или

APPEND (файловая_переменная);

При использовании процедуры RESET файл на диске должен существовать, в противном случае, возникает ошибка. Содержимое файла при открытии не меняется, данные из файла только можно читать.

При использовании процедуры REWRITE для открытия существующего файла его содержимое уничтожается, и файл становится пустым. Если же файла не существовало, он создается (также являясь пустым). В файл можно только записывать.

При использовании процедуры APPEND файл на диске должен существовать, в противном случае возникает ошибка. Содержимое файла сохраняется и можно записывать данные в конец файла.

Процедура

CLOSE (файловая_переменная);

закрывает файл. При этом все изменения окончательно сохраняются на диске, после чего связь между файловой переменной и самим файлом заканчивается.

Чтение из файла выполняется процедурами

RЕАD(файловая_переменная, список переменных).

и

READLN(фaйлoвaяJпepeмeннaя, список переменных).

Например:

var

f: text;

a,b, c: integer;

read (a, b, с); {ввод с клавиатуры}

read (f, a, b, с); {ввод из файла}

Символы из текстового файла читаются строго последовательно. Не имеется возможности считать произвольный символ.

Процедура READLN отличается от READ тем, что, введя необходимое количество данных, пропускает все остальные до конца строки файла.

Текущий указатель текстового файла указывает на символ, который будет считан следующим.

Чтение из текстовых файлов выполняется с преобразованием данных. Например, если нужно считать в переменную действительного типа, в файле должна находиться последовательность символов, которая представляет запись действительного числа. Если преобразование оказывается невозможным, возникает ошибка.

Символы #13 #10, которые разделяют строки, процедурой READ игнорируются, а для процедуры READLN служат ограничителем ввода.

Имеется также функция

EOLN (файловая_переменная):bооlean;

которая возвращает TRUE, когда достигнут конец строки и FALSE в других случаях.

Функция

EOF (файловая_переменная) :boolean;

возвращает TRUE, когда достигнут конец файла, и FALSE в других случаях.

Пример. Чтение из текстового файла с выводом на экран.

var

f: text;

s: string;

begin

readln(s)

assign (f, s);

reset(f);

while not eof(f) do

begin

readln(f,s); {ввод из файла} writeln(s); {вывод на экран}

end {while};

close(f) end.

Запись в текстовый файл выполняется процедурами

WRITE(Файловая_переменная, список выражений).

и

WRITELN(Файловая_переменная, список выражений).

Запись в текстовые файлы выполняется с преобразованием данных.

Процедура WRITELN выводит все предусмотренное списком вывода и дополнительно символы #13 #10.

Закончив запись в файл, его необходимо закрыть. Только после закрытия новый файл будет окончательно сформирован.

Пример. Ввод с клавиатуры и запись в текстовый файл. Прекращение после ввода пустой строки,

var

f: text;

s: string; begin

read(s);

assign (f, s);

rewrite (f); {открытие файла}

readln (s); {ввод с клавиатуры}

while s<> " do

begin

writeln(f,s); {вывод в файл}

readln(s); {ввод с клавиатуры}

end {while};

close (f) {закрытие файла}

end.