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

Доступ к компонентам файла осуществляется с помощью следующих процедур:

Write(<ф.п.>,<список переменных или значений>);

Read(<ф.п.>,<список переменных>);

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

Если список содержит несколько переменных, то указатель в файле будет смещаться на следующую после каждой операции ввода-вывода

Пример:

Var

F:file of byte;

X1,x2:byte;

Begin

Assign(f,’t.dat’);

Rewrite(f);

Write(f,x1,x2);

Close(f);

Reset(f);

Read(f,x1,x2);

Close(f);

В отличие от текстовых файлов информация хранится в виде, подобном машинному представлению, компоненты внутри файла не отделяют друг от друга. Е эти файлам не применяются процедуры writeln, readln, так как в этих файлах нет строк. Для определения конца файла возможно использовать функцию Eof(f) либо Filesize(f), возвращающую количество записей в файле. Процедура reset для типизированных файлов открывает файл одновременно как на запись так и на чтение.

Пример

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

Type

T_rec=Record

Name:String[15];

Year:word;

end;

var

f:file of T_Rec;

rec: T_rec;

i:byte;

begin

Assign(f, ‘z.dat’);

***

Rewrite(f);

for i:=1 to 3 do

begin

Rec.Name:=‘’;

write(‘Фамилия:’);

readln(‘Rec.name’);

write(‘Год:’);

readln(’Rec.Year’);

write(f.rec);

end;

close(f);

reset(f);

while not eof(f) do

begin

read(f,rec);

if Rec.year=1990 then

begin

write(rec.name);

readkey;

end;

end;

close(f);

Добавление записи в типизированный файл

Рассмотрим алгоритм добавления

1)открыть исходный файл в режиме чтения и промежуточный в режиме записи

2)переписать все записи исходного файла в промежуточный

3)записать в промежуточный файл новую запись

4)закрыть оба файла

5а)переписать из промежуточного файла в исходный и удалить промежуточный файл.

5б)Удалить исходный файл, переименовать промежуточный файл в имя исходного.

Пример

var

f1,f2:file of byte;

I;byte;

begin

Assign(f1, ‘a.dat’);

assign(f2, ‘b.dat);

***

<запись>

***

Reset(f1);

Rewrite(f2);

while not eof9f10 do

begin

read(f1,i0;

write(f2,i);

end;

close(f1)

close(f2);

Erase(f1);

Rename(f2, ‘a.dat’);

end.

Удаление записи

Удаление записи производится аналогично записи, за исключением того, что в промежуточный файл пишутся только не удаляемые записи (используется конструкция i<>i1 then … во время выбора)

Прямой доступ к типизированному файлу.

Для установления прямого доступа использую процедуру:

Seek(<ф.п.>, <№ условной границы>); - устанавливает указатель в файле на границу, номер которой во втором параметре. Пример:

Seek(f,25);

Read(f,ch);

Пример

***

var

f:file of char;

ch:char;

begin

Assign(f, ‘a.dat’);

rewrite(f);

for ch:=‘a’ to ‘z’ do

write(f, ch);

close(f);

reset(f);

Seek(f,3);

read(f, ch);

Seek(f, 25);

read(f, ch);

seek(f, 26);

read(f, ch);

close(f);

лекиция №14

Файл ввода/вывода. Прямой доступ к типизированном файлу.