пʼятниця, 4 листопада 2011 р.

ПРОЦЕДУРИ ДЛЯ РОБОТИ З ТЕКСТОВИМИ ФАЙЛАМИ


Процедура SETTEXTBUF (<Файлова змінна>: Text <БУФЕР>: Word); служить для збільшення або зменшення розміру буфера введення-виведення текстового файлу який відповідає файловій змінній. Автоматичне значення буфера дорівнює 128 байт.

Збільшення або зменшення буфера повинне відбуватися після операції зв’язування логічного файлу з фізичним, але до відкриття файлу. Задаючи новий буфер, необхідно передати процедурі SetTextBuf не тільки логічний файл, але і змінну <БУФЕР>, в якій цей буфер розташується.


Приклад:

VAR F:Text; {Опис файлової змінної}

Buf:Array[1 .. 2*1024] Byte; {Опис розміру буфера за допомогою масиву}

Bеgin

Assign(F,‘TextFill.TXT’); {встановлення зв’язку між логічним і фізичним файлами}

SetTextBuf(F, Buf); {Процедура зміни розміру буфера для файлу F. Тепер він рівний 2}

Rewrite(F); {Відкривається файл F для запису}

. . . . . . . . . {Інші дії з файлом F}

Процедура APPEND(<Файлова змінна>:TEXT); служить для спеціального відкриття файлу на запис. Вона застосовна тільки до існуючих фізичних файлів і відкриває їх для ДОЗАПИСУ. Тобто при відкритті файлу за допомогою процедури Аppend дані в файлі не стираються (як при Rewrite), а поточний покажчик файлу  встановлюється в кінець відкритого файлу і дані дописуються в файл.

Приклад: Append( S) { Відкривається файл S для дозапису}

Процедура FLUSH(<Файлова змінна>:TEXT); застосовується до файлів відкритим для запису (процедурами Rewrite або Append). Як вже наголошувалося дані для запису нагромаджуються в буфері і після його повного заповнення переносяться у файл. Процедура FLUSH ПРИМУСОВО ПЕРЕНОСИТЬ ДАНІ у файл з буфера незалежно від ступеня заповнення буфера.

Приклад: Flush(D); {Примусове перенесення даних з буфера у файл пов'язаний з змінною D}

Функція EOLN(<Файлова змінна>:Тext):<Результат:Boolean> аналізує поточний стан файлу відкритого для читання. Розшифровка цієї функції говорить саму за себе “ END – ON – LINE” – кінець рядка. EOLN повертає значення True, якщо на наступному кроці буде прочитана ознака кінця рядка або кінця файлу. У всіх інших випадках значення функції EOLN дорівнює False. Необхідність в цій функції виникає всякий раз, коли наперед не відомо, де зустрінеться кінець рядка або файлу. Існує різновид функції EOLN без параметра. В цьому випадку ця функція відноситься до читання (введенню) даних з клавіатури. Специфіка її полягає в тому, що вона зупиняє виконання програми і чекає натиснення клавіші “ENTER”. В цьому полягає ще один спосіб організації паузи до натиснення клавіші.

Приклад: Z := EOLn(F); {Z присвоюється значення «True», якщо досягнутий кінець рядка (файлу) або значення «False» в інших випадках}

Функція SEEKEOLN(<Файлова змінна>:Тext):<Результат: Boolean> є найближчою родичкою EOLn. Єдина відмінність в тому, що SeekEOLn “бачить” кінець рядка або кінець файлу через пропуски. Річ у тому, що якщо після останнього зчитування далі йдуть тільки пропуски, то EOLn читатиме їх доки не зустріне код кінець рядка (файлу). А SeekEOLn визначає кінець рядка (файлу) через пропуски, тобто раніше.

Приклад: Z := SeekEOLn ( F ); {Z присвоюється значення «True», якщо досягнутий кінець рядка (файлу) або далі до кінця рядка (файлу) слідують пропуски або символи табуляції. Z присвоюється значення «False» в інших випадках}

Функція SEEKEOF ( < Файлова змінна > : Text ) : < Результат : Boolean > відрізняється від функції EOF тим же, що і EOLn від SeekEOLn.

Немає коментарів:

Дописати коментар