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

Особливості обробки безтипових файлів даних

Формат оголошення безтипового файла у Pascal:

<ім'я типу> = file.

Наприклад,

var f : file.

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

reset (<файлова змінна>, <розмір буфера>);

rewrite (<файлова змінна>, <розмір буфера>),

де <розмір буфера> - розмір буфера передачі даних (за замовчуванням - 128 байт).

Для читання та запису у безтиповий файл використовуються спеціальні процедури BlockRead і BlockWrite. що дозволяють швидко пересилати дані. Їх формат:

BlockRead (<файлова змінна>, <змінна-приймач>, <кількість блоків>[, <кількість фактично зчитаних блоків>]);

BlockWrite (<файлова змінна>, <змінна-джерело>, <кількість блоків>[,<кількість фактично записаних блоків>]).

Ці процедури за одне звертання зчитують в <змінну-приймач> / записують із <змінної-джерела> число байт, що дорівнює добутку розміру буфера обміну, заданого при відкритті файла, на <кількість блоків>:

V = <кількість блоків>* <розмір буфера>.

Дійсне число зчитаних або записаних повних блоків повертається в необов'язковому параметрі <кількість повних блоків>. Якщо операції читання або запису пройшли успішно, то значення цього параметра буде дорівнювати відповідному значенню параметра <кількість блоків>; якщо ж при введенні-виведенні відбувся збій і замовлене число блоків не перенеслося, то цей параметр буде містити ціле число вдало перенесених блоків. Якщо параметр <кількість повних блоків> не заданий і число зчитаних записів не збігається з очікуваним, то виникає помилка введення-виведення.

Методи доступу до елементів файлу

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

- послідовно;

- за допомогою прямого доступу до них.

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

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

Реалізація прямого доступу забезпечується наступними процедурами і функціями:

  • процедура Seek (<файлова змінна>, <номер елемента>) - переміщує покажчик файла на заданий елемент;

  • процедура Trancate (<файлова змінна>) – видаляє всі елементи файла від поточного до кінця файла;

  • функція FileSize (<файлова змінна>) - визначає поточний розмір файла (число його елементів);

  • функція FilePos (<файлова змінна>) - визначає значення поточної позиції у файлі (номера поточного елемента).

 Необхідно враховувати, що номер фізичного запису завжди на 1 менший за номер логічного запису.

Наприклад,

seek (f, filepos (f) + 1); {пропуск одного елемента}

seek (f, 0); {перехід на початок файла}

seek (f, filesize (f)); {перехід на кінець файла}

Файлові дескриптори та файлові змінні

Імена, каталоги, розширення - всі ці ознаки файлу иотрібиі тільки тому. що на зберігаючих пристроях знаходиться багато різних файлів. Конкретні програми, якщо вони звертаються до файлів з даними, використовують да­леко не так багато файлі» одночасно, тому складна система файлових імен їм не потрібна. Більш за тс, складна система файлового імені заважатиме роботі з файлом. Припустимо па хвилинку, що кожного разу для запису даних в файл ми повинні були б вказувати повну або скорочену начну фай­лу, а під час роботи програми з'ясувалось, що вам вІ;ггспср буде потрібно працювати з Іншим файлом. Тоді було б необхідно виправляти назву в ко­жному рядку з операцією запису! Тому в програмах замість назви файлу використовується файловий дескриптор (сукупність даних про файл).

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