Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programuv_good.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
990.21 Кб
Скачать
  1. Процедура примусового очищення внутрішнього буфера обміну

FLUSH (<файлова змінна>);

Здійснює скидання у файл останніх записуваних даних, але не закриває файл. При використанні flush можна перевідкрити файл для читання без його закривання після режиму запису.

Спеціальні підпрограми для роботи з типізованими файлами

Відкриваються і закриваються всі види файлів однаково.

Операції зчитування, запису і переміщення по файлу мають відмінності для різних видів файлів.

Типізовані файли умовно є послідовністю елементів деякого базового типу.

Розмір елемента визначається розміром його типу. Всі елементи у файлі умовно записуються в один рядок.

Для роботи з типізованими файлами використовують такі процедури і функції.

  1. Розглянуті раніше встановлюючи та завершальні підпрограми

  2. Процедура читання

READ (<файлова змінна>,<список параметрів вводу>);

Першим параметром процедури читання є файлова змінна, що представляє файл у програмі. Ця змінна повинна попередньо бути зв’язаною з конкретним файлом процедурою assign і цей файл має бути відкритим для читання процедурою reset .

Решта параметрів це перелікк змінних однакового типу, що співпадає з типом файлу. Кількість параметрів вводу має бути не меншою ніж кількість елементів у файлі від поточної позиції файлового вказівника до кінця, інакше помилка. Виклик цієї процедури переміщує файловий вказівник на відповідну кількість елементів.

  1. Процедура запису у файл

WRITE (<файлова змінна>,<список параметрів виводу>);

Першим параметром процедури є файлова змінна. Ця змінна повинна попередньо зв’язана з конкретним файлом і цей файл повинен бути відкритим для читання або запису.

Якщо файл відкритий для запису, то всі дані стираються і запис виконується спочатку. Якщо ж файл відкритий для читання, то всі дані залишаються і файл відкривається для модифікації. Це має місце лише для типізованих файлів. Список параметрів виводу складається із довільної кількості змінних або констант, тип яких співпадає із типом файлу. Виконання процедури запису переміщує файловий вказівник на відповідну кількість записів, причому або дані перезаписуються поверх старих або доповнюються в кінець, причому елемент eof посувається.

Наприклад

Var

f: file of integer;

x, y, z: integer;

assign(f, ‘file int.dat’);

reset(f);

x:=3; y:=4; z:=5;

write(f,x,y,z);

  1. Функція визначення розміру файла у записі

Операційна система легко повідомляє про розмір файла у байтах. Якщо ж потрібно встановити кількість елементів певного типу у цьому файлі

Очевидно, що простий поділ розміру файла у байтах є мало ефективним. Для цього виконується функція

FILESIZE(<файлова змінна>);

Якщо один і той самий файл зв’язати з різними файловими змінними різних типів, то результат функції буде різним.

Наприклад

Var

f1: file of integer;

f2:file of real;

x, y:longint;

assign(f1, ‘file.dat’);

reset(f1);

x:=filesize(f1);

close(f1);

assign(f2, ‘file.dat’);

reset(f2);

y:=filesize(f2);

close(f2);

  1. функція визначення позиції файлового вказівника

Позиція вказівника визначає кількість елементів файла перед ним. Нумерація елементів починається з 0. якщо вказівник на початку, то його позиція співпадає із кількістю елементів.

FILEPOS (<файлова змінна>);

  1. Процедура встановлення файлового вказівника в задану позицію

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

SEEK (<файлова змінна>;<номер позиції>);

Другий параметр номер елемента, перед яким стає файловий вказівник.

  1. Функція визначення кінця файла

EOF(<файлова змінна>);

Результат true, якщо eof в кінці файлу і false – якщо на будь-якій іншій позиції.

Оскільки в більшості випадків кількість елементів у файлі є невизначеною наперед, то для циклічних операцій з елементами файлу викликається оператор з передумовою

WHILE NOT EOF (<файлова змінна>) DO

  1. Функція встановлення файлового вказівника в кінець файлу

SEEKEOF(<файлова змінна>);

Ця функція переміщує файловий вказівник в кінець і дає при цьому істинний результат. Хибний результат означає неможливість переміщення в кінець файлу.

Наприклад

Створити типізований файл цілих чисел, відкрити його для читання і знайти суму кожного п’ятого елементу.

Var

f: file of integer;

i, j, x: integer;

begin

assign(f, ‘file.dat’);

rewrite(f);

for i:=1 to 20 do

begin

readln(x);

write(f,x);

end;

close (f);

reset(f);

j:=0; x:=0;

while not eof (f) do

begin

read(f,i);

x:=x+i; j:=j+5;

if filesize (f) <=j then

seekeof(f) else seek (f,j);

end;

close(f);

writeln(x);

end.

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