Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pr_7а_2011.doc
Скачиваний:
1
Добавлен:
17.12.2018
Размер:
132.61 Кб
Скачать

Writeln – запись всех величин с обязательной установкой маркера конца строки в файл:

Readln(Var F:Text;V1[,V2,…,Vn]);

Writeln(Var F:Text;V1[,V2,…,Vn]);

Append(F) – открывает уже существующий файл и позиционирует указатель обработки на конец файла. Используется для дозаписи информации в уже существующий файл.

Eoln(F) - возвращает булевское значение True ,если текущая файловая позиция находится на маркере конца строки, в противном случае –False.

Eof(F) - равно True , если указатель конца файла находится сразу за последним компонентом, в других случаях – False.

Пример.

Прочитать информацию из файла D.Datдлиной 10 символов из каждой записи.

Program P_L7_2;

Var

F:Text;

I:Byte;

St:String[10];

BEGIN

Assign(F,'D.dat');

Reset(F);

While not Eoln(F) do begin

Read(F,St);

Writeln('ST= ',St);

For I:=1 to 10 do St[I]:=' ';

Readln(F);

end;

Close(F);

END.

SeekEoln(F) – возвращает True при достижении маркера конца строки, пропуская все пробелы и знаки табуляции, предшествующие маркеру.

SeekEof(F) – True, если указатель находится на маркере конца файла, пропуская все знаки табуляции и пробелы, предшествующие маркеру.

Для оптимизации времени обращений к диску – весь файл считывают в память, а затем преобразованный файл записывают на диск. Для этих целей назначают свой буфер ввода-вывода Buf:

SetTextBuf(Var F:Text; Var Buf[;Size:Word]);

Параметр Size при вызове может быть опущен. В этом случае размер буфера соответствует SizeOf(Buf).

Назначение буфера переменной F распространяется до следующего использования переменной новым внешним файлом.

Пример.

Program P_L7_3;

Uses Crt;

Var

F:Text;

Ch:Char;

Buf:Array[1..500] of Char;

BEGIN

ClrScr;

Assign(F,'D.Dat');

SetTextBuf(F,Buf);

Reset(F);

While not Eof(F) do begin

Read(F,Ch);

Write(Ch);

end;

Close(F);

END.

Для исключения потери информации следует переназначение буферов производить после вызова процедуры Assign, или сразу,- после процедуры открытия файлов до любой операции обмена.

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

Program P_L7_4;

Uses Crt;

Const

Num:Integer=0;

Var

F:Text;

Strn:String;

BEGIN

ClrScr;

Assign(F,'D.Dat');

Reset(F);

While not Eof(F) do begin

Inc(Num);

Readln(F,Strn);

Writeln(Num,': ',Strn);

end;

Close(F);

End.

Типизированные файлы

К типизированным файлам относятся файлы строго определенной структуры.

Пример.

………..

Type

FileRec=record

…………

end;

Var

F:File of FileRec;

…………

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

Длина записи определяется как SizeOf(FileRec).

Seek(F;NumRec:LongInt) – устанавливает текущую файловую переменную

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

Для наглядного представления отличия в представлении информации в типизированных и текстовых файлах предлагается рассмотреть рис.1 и рис.2.

1-я строка

Д

А

Н

Н

Ы

Е

#13

#10

2-я строка

Э

К

С

П

Е

Р

И

М

Е

Н

Т

А

#13

#10

3-я строка

П

В

Д

-

7

#13

#10

Рис.1Представление строк в текстовом файле.

1-я строка

#6

Д

А

Н

Н

Ы

Е

#0

#0

#0

#0

#0

#0

2-я строка

#12

Э

К

С

П

Е

Р

И

М

Е

Н

Т

А

3-я строка

#5

П

В

Д

-

7

#0

#0

#0

#0

#0

#0

#0

Рис.2Представление строк в типизированном файле:

Структура типизированного файла:

………………

Type

FileRec=record

N-F:String[12]

End;

Var

F:File of FileRec;

…………………

FilePos(F): LongInt – функция возвращает для файла F текущую файловую позицию (номер записи, на которую она установлена) в виде значения типа LongInt.

FileSize(F):LongInt – возвращает значение размера файла (количество записей) типа LongInt.

Для пустого файла FileSize=0.

Если файл уже создан и файловая позиция установлена по Seek( ), находится где-нибудь в начале файла (FilePos(F) < FileSize(F)), то в конец файла ее позволяет перевести вызов Seek(F,FileSize(F)).

Единица измерения файла – запись; длина записи определяется как SizeOf(FileRec).

Seek(F;NumRec:LongInt) – устанавливает текущую файловую переменную F на запись с номером NumRec; F – файловая переменная для типизированных и нетипизированных файлов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]