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

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

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

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

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

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

Наприклад

For i:=1 to m do

Begin

Seek (f, n+m+i-1);

Read(f,x);

Seek(f, n+i-1);

Write(f,x)

End;

Truncate(f);

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

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

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

Текстові файли на диску нічим не відрізняються від інших файлів. Всі дискові файли

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

Текстові файли – це послідовність елементів, але, на відмінну від типізованого файлу file of char, в текстових файлах деякі елементи мають своє спеціальне призначення. Це спеціальні комбінації символів #13 #10, які утворюють ознаку кінця рядка. Ця ознака займає 2 байти, але не є текстовою інформацією.

Файлові змінні, які представляють текстові файли у програмі оголошуються службовим словом text. Як і всі інші файли вони повинні бути зв’язані

Наприклад

Assign(f, ‘text.txt’);

Як і типізовані текстові файли відкриваються для читання і запису.

Зауваження На відмінну від типізованих reset(f) відкриває лише для читання, rewrite(f) – тільки для запису.

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

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

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

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

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

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

Readln читає і в будь-якому випадку переміщує файловий вказівник на новий рядок.

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

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