Similar presentations:
18_Типизированные файлы
1. Типизированные файлы
12. Объявление типизированных файлов
Varf: file of <тип компонент файла>;
Var
f: file of integer;
или
Type
ff= file of integer;
Var
f: ff;
2
3. Объявление типизированных файлов
Varf1: file of string;
f2: file of char;
Type
anketa= record
fam, imy:string[20];
end;
ff=file of anketa;
Var
f: ff;
3
4. Стандартные процедуры для работы с типизированными файлами
Процедура read (имя файловой переменной, список ввода);Список ввода – последовательность переменных того же типа,
что и компоненты файла, через запятую.
Процедура read используется для чтения из файла. Ранее должны
быть выполнены процедуры assignfile и reset. При выполнении
процедуры read указатель автоматически смещается на число
считанных компонент и указывает на КОМПОНЕНТУ, КОТОРАЯ
СЧИТАЕТСЯ СЛЕДУЮЩЕЙ.
var
f: file оf real;
d,d1: real;
begin
assignfile(f, ‘f.dat’);
reset(f);
read(f, d); или read(f, d,d1);
Процедура readln к типизированным файлам НЕ ПРИМЕНЯЕТСЯ!
4
5. Стандартные процедуры для работы с типизированными файлами
Процедура write (имя файловой переменной, список вывода);Список вывода – последовательность переменных через запятую.
Процедура write используется для записи в файл. Ранее должны
быть выполнены процедуры assignfile и rewrite. При выполнении
процедуры write указатель автоматически смещается на число
записанных компонент и указывает на АДРЕС КОМПОНЕНТЫ,
КОТОРАЯ ЗАПИШЕТСЯ СЛЕДУЮЩЕЙ.
var
f: file of real;
d1,d: real;
begin
assignfile(f, ‘f.dat’);
rewrite(f);
write (f, d); или write (f, d,d1);
Процедура writeln к типизированным файлам НЕ ПРИМЕНЯЕТСЯ!
5
6. Стандартные процедуры для работы с типизированными файлами
Каждая компонента типизированного файла имеет свой номер.Компоненты типизированного файла нумеруются с 0.
Процедура seek (имя файловой переменной, номер компоненты);
номер компоненты – целое неотрицательное число типа integer
или longint
Процедура seek переставляет указатель на компоненту с
заданным номером. Ранее должна быть выполнена процедура
assignfile.
var
f: file of real;
d: real;
n: integer; или n: longint;
begin
assignfile(f, ‘f.dat’);
…
n:=5;
seek (f, n); или seek (f, 5);
6
7. Стандартные функции для работы с типизированными файлами
Каждая компонента типизированного файла имеет свой номер.Компоненты типизированного файла нумеруются с 0.
Функция filepos (имя файловой переменной);
Возвращает номер компоненты файла (целое неотрицательное
число типа integer или longint), на которую указывает указатель
(которая будет обрабатываться следующей).
Ранее должна быть выполнена процедура assignfile.
var
f: file of real;
d: real;
n: integer; или n: longint;
begin
assignfile(f, ‘f.dat’);
…
n:= filepos (f);
7
8. Стандартные функции для работы с типизированными файлами
Каждая компонента типизированного файла имеет свойномер. Компоненты типизированного файла нумеруются
с 0.
Функция filesize (имя файловой переменной);
Возвращает длину файла (число компонент в файле (целое
неотрицательное число типа integer или longint)).
Ранее должна быть выполнена процедура assignfile.
var
f: file of real;
d: real;
n: integer; или n: longint;
begin
assignfile(f, ‘f.dat’);
…
n:= filesize (f);
8
9. Создание типизированного файла
12
начало
Связать f с
файлом f.dat
3
Открыть файл f для
записи
4
Цикл А
1≤ i≤n
5
Ввод d
6
7
8
Запись d
в файл f
Цикл А
i
Закрыть
файл f
9
конец
9
10. Создание типизированного файла
varf: file of real;
d: real;
i, n: integer;
begin
assignfile(f, ‘f.dat’);
rewrite(f);
n:= Memo1.Lines.Count;
for i:=1 to n do begin
d:=strtofloat (Memo1.Lines[i-1]);
write(f,d)
end;
closefile(f)
end;
10
11. Чтение типизированного файла
12
начало
Связать f с
файлом f.dat
3
Открыть файл f для
чтения
4
5
не конец
файла f
Да
Читать d
из файла f
Нет
6
Вывод d
7
Закрыть
файл f
8
конец
11
12. Чтение типизированного файла
varf: file of real;
d: real;
begin
assignfile(f, ‘f.dat’);
reset(f);
while not(eof(f)) do begin
read(f,d);
Memo2.Lines.Add(floattostr(d));
end;
closefile(f)
end;
12
13. Особенности работы с типизированными файлами Пример
Пусть в файле записаны целые числа: 5 21 52 64Исправить в типизированном файле третью по счету компоненту (заменить
ее значение на число 10).
Результат должен быть: 5 21 10 64
var
f: file of integer;
d, i: integer;
begin
assignfile(f, ‘f.dat’);
…
reset(f);
i:=3;
seek(f, i-1);
d:=10;
write(f,d);
closefile(f)
end;
Файл открыт для чтения, но туда происходит запись!
Компоненты файла нумеруются с 0.
13
14. Особенности работы с типизированными файлами Пример
Пусть в файле записаны целые числа: 5 21 52 64Дописать в конец типизированного файла число 10.
Результат должен быть: 5 21 52 64 10
var
t: file of integer;
d,i: integer;
begin
assignfile(f, ‘f.dat’);
…
reset(f);
i:=filesize(f);
seek(f, i);
d:=10;
write(f, d);
closefile(f)
end;
Файл открыт для чтения, но туда происходит запись!
Компоненты файла нумеруются с 0.
14
15. Нетипизированные файлы
1516. Объявление нетипизированных файлов
Varm: file;
Используются при объединении в один
нескольких файлов, тип которых неизвестен
пользователю.
Нетипизированные
файлы
совместимы с любым типом файлов.
16
17. Стандартные процедуры для работы с нетипизированными файлами
Процедура assignfile (имя файловой переменной,имя файла на диске);
Процедура reset (имя файловой переменной, 512);
Процедура rewrite (имя файловой переменной, 512);
512 – длина в байтах участка (кластера) диска. Размер
кластера выбран для обеспечения максимальной
скорости обмена данными с диском, так как под
нетипизированный файл место на диске выделяется
кластерами.
17
18. Стандартные процедуры для работы с нетипизированными файлами
При работе с нетипизированными файлами используются те жепроцедуры и функции, что и с типизированными, кроме процедур
read и write.
Вместо процедуры read используется процедура
blockread (имя файловой переменной, имя переменной, d1, n1);
Вместо процедуры write используется процедура
blockwrite (имя файловой переменной, имя переменной, d1, n1);
имя переменной – имя буфера, куда считывается или откуда
записывается информация;
d1, n1 – целые числа (тип integer)
d1- количество записей, которое считывается или записывается
за одно обращение к диску;
n1 – необязательный параметр (сколько фактически считано или
записано блоков).
Объем памяти под буфер должен вмещать d1 блоков.
Пусть в файле 3 блока.
Если d1=2, то за первое обращение к диску будет считано 2 блока
(d1=n1=2), а за второе – 1 (d1=2, а n1=1)
18
programming