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

8.7.2. Изменение текущего элемента

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

Seek (<файловая переменная>, <номер нового текущего элемента>);

Процедура Seek (англ. Seek – искать) перемещает указатель текущего элемента файла, заданного параметром файловая переменная, в позицию, заданную параметром номер текущего элемента. Нумерация элементов файла ведётся от нуля, то есть первый элемент имеет номер 0.

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

Program RandomRead;

Uses Crt;

Var

T, Sum: real;

F: File of Real;

Begin

ClrScr;

Assign(F, ‘temps.bin’);

Reset(F);

Seek(F,0);

{Позиционирование указателя текущего элемента на первый элемент необязательно, т.к. при открытии файле текущим элементом является первый (с номером 0)}

Read(F,T);

{Чтение из файла текущего элемента (первого) в переменную T}

Writeln(‘Первый элемент = ’, T:6,3);

Seek(F,FileSize(F)-1);

{Позиционирование указателя текущего элемента на последний элемент}

Read(F,T);

{Чтение из файла текущего элемента (последнего) в переменную T}

Writeln(‘Последний элемент = ’, T:6,3);

Close(F);

ReadKey;

End.

Добавление информации в файл

Добавление информации в двоичные файлы

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

Пример . Запись в двоичный типизированный файл элемента в произвольную позицию

Program RandomWrite;

Uses Crt;

Var

T: real;

i: Integer;

F: File of Real;

Begin

ClrScr;

Assign(F, ‘rand.bin’);

ReWrite(F);

Seek(F,9);

{Позиционирование указателя текущего элемента на десятый}

T:=20.5

Write(F,T);

{Запись значения переменной T в десятый элемент файла, предыдущие 9 заполняются нулями}

Close(F);

ReadKey;

End.

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

Листинг 212. Добавление информации в двоичный типизированный файл

Program AddBin;

Uses Crt;

Var t:real;

I:integer;

F:file of real;

Begin

Assign(f, ‘rand.bin’);

{сопоставление файловой переменной файлу rand.bin}

Reset(f);

{открытие файла rand.bin для записи}

Seek(f, 10);

{перемещение указателя текущего элемента на одиннадцатый}

T:=20.5;

Write(f,t);

{запись значения в 11 элемент файла, остальные остаются без изменения}

Close(f);

{закрытие файла}

Readkey;

End.