Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование на паскале2.doc
Скачиваний:
144
Добавлен:
31.03.2015
Размер:
935.94 Кб
Скачать

3.3.2. Файлы в Турбо Паскале

Файлы бывают текстовые, типизированные и нетипизированные.

Функция EOF20(имя_файла) применяется к файлам любого вида. Она возвращает значениеTRUE при чтении конца файла, иначе возвращает FALSE.

Все процедуры, использующие файлы, не работают без других, подготовительных, процедур: ASSIGN21, RESET, REWRITE.

Процедура ASSIGNсвязывает программное имя файла (т.е. имя переменной, описанной как файл) и его физическое имя (т.е. имя файла на диске или имя устройства, записанное по правилам операционной системы). Обращение к процедуре имеет вид:

ASSIGN(програм_имя_файла,физич_имя_файла).

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

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

RESETи REWRITE называются процедурами открытия файла (для чтения и записи, соответственно). ПроцедураAPPEND(имя_файла) открывает текстовый файл для дополнения.

После окончания работы с файлом необходимо его закрыть с помощью процедуры CLOSE22 (имя_ файла). Под закрытием файла понимается его сохранение и перерегистрация в каталоге. Кроме того, в результате закрытия файла разрушается связь между программным и физическим именами файла, определенная операторомASSIGN; использование программного имени файла становится невозможным (до повторного примененияASSIGNи открытия файла).

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

Для описания переменной типа текстовый файл используется ключевое слово TEXT23:

VAR имя_текст-файла: TEXT;. . .

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

READ(имя-файла,список_ввода);

WRITE(имя_файла, список_вывода)

READLN(имя_файла, список_ввода);

WRITELN(имя_файла, список_вывода)

Если имя файла отсутствует, то используется имя CON.

Функция EOLN24(имя_файла) применима только к текстовым файлам (так же, как и процедурыREADLN иWRITELN); она возвращает значениеTRUE,если считан конец строки, иначе возвращает значение FALSE.

Далее приведены программы, исходные и выходные данные которых хранятся в текстовых файлах.

Пример 1

program Primer1_3_3_3;

{В текстовом файле Х хранятся сведения об игрушках}

{в текстовый файлY записываются сведения}

{о конструкторах для детей до 7 лет}

Type sved=record

name:string;

minage,maxage:integer;rub:real;

end;

Var x,y:text; toy:sved;

Begin

Assign (x,'d:\student\xtext.txt');

Assign(y,'d:\student\ytext.txt');

{физические имена файлов выбраны произвольно}

reset(x); rewrite(y);{xоткрывается для чтения, у - для записи}

if eof(x) then writeln('x - пустой')

else

Begin

while not eof(x) do

with toy do

Begin

readln(x,name); {запись считывается по полям}

readln(x,minage,maxage,rub);

if((pos('конструктор',name)>0) or pos('конструктор',name)>0))

and (maxage<=7) then

writeln(y,name); {запись выводится по полям}

writeln(y,minage,maxage, rub:8:0);

End;

End;

Close(x); Close(y);

End.