РОБОТА З ФАЙЛАМИ

Попередня сторінка Зміст Задачі Наступна сторінка

В умові програмування Pascal під файлом розуміють область пам'яті на зовнішньому запам'ятовуючому пристрої, яка здатна зберігати деяку інформацію. В цю область зовнішньої пам'яті можна записувати певну інформацію і з неї можна її зачитувати. Ці дії називаються вводом-виводом.
Для організації роботи з файлом потрібно встановити зв'язок між цим файлом і деякою змінною файлового типу.
Файловий тип задається за допомогою слів. file of <тип>, де < тип > - це базовий тип компонент файла.
Базовий тип може бути будь-яким типом, крім файлового; крім того, в якості базового типу не до пускається комбінований тип, одним із полів якого є файловий тип. Наприклад, якщо файл містить послідовність дійсних чисел, то файлову змінну F потрібно описати наступним чином:

Var F:file of real;

Інші приклади описань файлових типів та змінних:

Type Sequence=file of char;
Var F1, F2:Sequence;
Table: file of string [80];
InputData: file of integer;

Для встановлення зв'язку між файлом і файловою змінною служить процедура Assign. Дана процедура має два параметри. Перший параметр - це ім'я файлової змінної, другий параметр - ім'я файла. Ім'я файла будується за правилами, прийнятими в операційній системі MS-DOS і може включати в себе ім'я диска, послідовність каталогів , що приводить до даного файла, і повне ім'я файла.
Процедура Assing дозволяє встановити відповідність не тільки між файловою зміною та дисковим файлом, але й між файлом змінною та будь-яким пристроєм вводу - виводу: клавіатурою, принтером або дисплеєм. Досить вказати символічне ім'я пристрою вводу - виводу в якості другого параметра процедури Assign, щоб ввід чи вивід здійснювався цим пристроєм. Наступні символічні імена доступні для використання їх стандартними файловими процедурами:
CON-пристрій консолі, для якого вивід здійснюється на екран дисплея, а ввід - з клавіатури.
LPT1, LPT2, LPT3 - відповідають трьом можливим іменам друкуючих пристроїв, які підтримуються операційною системою. Якщо до комп'ютера приєднано один друкуючий пристрій, то використовується ім'я "LPT1"або його синонім "PRN".
COM1, COM2-відповідають двом пристроям послідовного вводу - виводу, тобто двом послідовним портам зв'язку, які використовуються для обміну даними між комп'ютерами.

Приклади.

Assign(Input,'CON');
Assign(L,'PRN');
Assign(f,'C:\TP\PROC\prog2.pas');

Таким чином, процедура Assign дозволяє зв'язати файлову змінну з будь-яким конкретним зовнішнім файлом чи пристроєм. Далі розглянемо загальні операції, які використовуються при роботі з файлами.
Щоб почати роботу з файлом його потрібно відкрити. В Паскалі для цього передбачено дві процедури:

Reset(f:file);-відкриває існуючий файл для читання;
Rewrite(f:file);-створює і відкриває новий файл для запису.

В описі обох процедур параметр <file> означає файлову змінну будь-якого типу. Відкриття зовнішнього файла з допомогою процедури reset, у випадку його відсутності на диску, проводить до помилки під час виконання програми. Використання процедури rewrite потребує особливої уваги. Спроба відкрити для запису новий файл із іменем вже існуючого на диску файла проводить до знищення інформації існуючого файла.

Операція закриття файла є логічним завершенням роботи з пристроєм вводу - виводу. Для цього служить процедура Close(f:file);
Використання процедури close дозволяє ліквідувати зв'язок між файлом і файловою змінною, встановленою процедурою Assing.
До засобів роботи з файлами слід віднести процедури переіменування та знищення невідкритих файлів.
Процедура Rename(f:file; newname:string); переіменовує невідкритий файл будь-якого типу, зв'язаний із файловою змінною f. Нове ім'я задається рядком Newname. Процедура erase(f:file); знищує невідкритий зовнішній файл будь-якого типу, зв'язаний з файловою змінною f.
До засобів роботи з каталогами слід віднести процедури

ChDir - встановити активний каталог,
MkDir - створити новий каталог,
RmDir - знищити пустий каталог.

Для запису інформації у файл та читання з файла в Паскалі є дві процедури Read i Write. На відміну від попередніх процедур, Read iWrite можуть викликатися з різним числом параметрів, і ці параметри можуть мати різні типи.
Процедура Read призначена для читання значень із файла в програму. Першим параметром повинно бути ім’я файлової, змінної, до якої була застосована операція відкриття Reset. Далі повинні слідувати змінні, в які будуть записуватися прочитані з файла значення. Тип цих змінних повинен співпадати з базовим типом файла.
Процедура Write, навпаки, для запису в файл інформації з програми. Першим параметром цієї процедури повинно бути ім'я файлової змінної, до якої була застосована операція відкриття Rewrite. Далі повинен йти список виразів , тип яких співпадає з базовим типом файла.

При читанні інформації з файла доцільно використовувати логічну функцію EOF(End Of File). Ця функція з одним параметром - файловою змінною і повертає булеве значення True або False в залежності від того, досягнуто кінець файла чи ні. При роботі з текстовими файлами використовують функцію EOLn(EndOf Line). Ця функція повертає булеве значення True, якщо досягнуто кінець строки, і False в противному випадку.


Попередня сторінка Зміст Задачі Наступна сторінка