Для роботи з файлами в розділі опису VAR необхідно оголосити файлову змінну:
F:Text; {оголошена файлова змінна F для текстових файлів}
А:File of Char; {оголошена файлова змінна А для файлів символьного типу}
D:File; {оголошена файлова змінна D для без типізованих файлів}
Після оголошення файлової змінної ця змінна ще жодним чином не пов'язана з якимсь конкретним (фізичним) файлом. Після оголошення файлової змінної визначається структура зберігання даних ( відповідно до об’явленого типу файлу). Зв'язок файлової змінної з фізичним файлом відбувається в тексті програми за допомогою спеціальної процедури. Одну і ту ж файлову змінну можна використовувати для роботи з декількома різними файлами за умови, що ця робота організована коректно.
Для зв’язування файлової змінної з фізичним файлом передбачена процедура ASSIGN. Після операції зв’язування всі дії, передбачені в тексті програми, проводитимуться тільки з відповідним фізичним файлом.
Будучи встановленим, зв'язок між файлом і файловою змінною зберігається до наступного виклику процедури ASSIGN. Це означає, що одну файлову змінну можна використовувати для роботи з різними файлами, але ця змінна працює тільки з одним файлом, з яким на даний момент був встановлений зв'язок. Операцію зв’язування можна застосовувати як до існуючих файлів, так і до неіснуючих для подальшого їх створіння.
Процедура ASSIGN має наступний вигляд: ASSIGN(<файлова змінна>, <фізичний файл>);
На місці <фізичний файл> повинно стояти ім'я файлу або його розширене ім'я (з вказівкою шляху доступу до нього). Ім’я файлу заключається в одинарні лапки.
Приклади:
1) Assign(F,‘Dokument.TXT’); {Встановлюється зв'язок файлової змінної F з фізичним файлом ‘Dokument.TXT’ в поточному каталозі}
2) Assign(S,‘С:\Dok.TXT’); {Встановлюється зв'язок із змінною S і файлом Dok.TXT на диску С:}
3) Assign(А,‘А:\Katalog\Name\ Priklad.DOC’); {Встановлюється зв'язок змінної А з файлом Priklad.DOC в підкаталозі Name каталогу Кatalog на диску А:}
4) Assign( X, ‘PRN’ ); {Встановлюється зв'язок змінної Х з файлом-пристроєм друку}
5) Assign( У, ‘NUL’ ); {Встановлюється зв'язок змінної У з файлом-пристроєм NUL}
Більшість дій з файлами можна проводити тільки з відкритими файлами.
Для відкриття файлу передбачені дві процедури: RESET і REWRITE. Після відкриття файлу до нього можна записувати дані або зчитувати дані. Запам'ятаємо, що операції введення-виведення для файлів здійснюються тільки для відкритих файлів. Процедура RESET відкриває файл для зчитування даних із файлу, а процедура REWRITE відкриває файл для запису даних у файл. Не можна записати дані у файл відкритий для читання і навпаки. Відкривати файл для читання можна кілька разів, при цьому перед повторним відкриттям він автоматично закривається, а поточний покажчик файлу встановлюватиметься на його початок. Але слід зауважити, що при повторному відкритті файлу для запису всі дані у файлі будуть стерті. Річ у тому, що при відкритті файлу для запису, файл очищується (стає порожнім).
Процедури RESET і REWRITE мають наступний вигляд:
RESET(<файлова змінна>); REWRITE(<файлова змінна>);
Приклади:
1) Reset(F); {Файл F відкритий для читання}
2) Rewrite(F); { Файл F відкритий (але вже порожній) для запису }
3) Reset(F); { Файл F знову відкритий для читання}
4) Rewrite(F); { Файл F ( знову порожній) відкритий для запису }
5) Rewrite(F); { Файл F (знову порожній) відкритий для запису}
Деякі операції з файлами можливі тільки із закритими файлами. Для закриття файлу застосовується процедура CLOSE. Вона має вигляд: CLOSE (<файлова змінна> );
Приклади:
1) Close (F); { Файл F закритий}
2) Close (D); { Файл D закритий}
Запам’ятаємо, що процедура закриття застосовується тільки до відкритих файлів, як для читання так і для запису. Спроба закрити вже закритий (або ще не відкритий) файл приведе до збою програми. Процедура Close не змінює зв'язок між файловою змінною і фізичним файлом, але призначає йому поточний стан “закритий”. Це особливо важливо для файлів відкритих для запису, оскільки фатальна помилка в програмі (не обов'язково пов'язана з операцією закриття файлу) не зможе вплинути на вміст закритого файлу. Але якщо програма перервалася до закриття файлу, то файл буде створений, але вміст останнього буфера не буде перенесений до нього. А при помилці закриття файлу можна втратити весь файл. Процедуру Close необхідно використовувати при завершенні роботи з файлами. Взагалі потрібно пам’ятати, що процедури Reset/Rewrite повинні бути в парі з Close.
При необхідності можна змінити ім'я фізичного файлу. Звернемо увагу на те, що змінити можна тільки ім'я файлу, але не шлях до нього (диск, каталог і т.п.). Адресацію слід залишати незмінною.
Процедура зміни імені має вигляд: RENAME(<файлова змінна>, <друге ім'я фізичного файлу>);
Операція RENAME застосовується тільки до закритого файлу. Після перейменування файлу, файлова змінна буде пов'язана з новим ім'ям файлу.
Приклад:
Assign(F,‘D:\Katalog\Name.TXT’); {Встановлено зв'язок між файловою змінною F і файлом Name.TXT в каталозі Katalog на диску D:}
Rename(F,‘D:\Katalog\NewName.TXT‘); {Перейменовується файл з ім'ям Name.TXT пов'язаний із змінною F на нове ім'я NewName.TXT. Тепер змінна F буде зв'язана з файлом D:\Katalog\NewName,TXT.}
Для видалення (знищення, стирання) фізичних файлів на диску застосовується операція ERASE. Ця операція застосовується тільки до закритих файлів. Перед видаленням, файлова змінна повинна бути пов'язана з існуючим файлом. Процедура ERASE має вигляд: ERASE (<файлова змінна>);
Приклад:
Assign(F,‘С:\FileName‘); {Встановлюється зв'язок змінної F з файлом FileName}
ERASE(F); {Віддаляється файл, пов'язаний із змінною F}
При роботі з файлами часто необхідно визначати: досягнутий кінець файлу чи ні. Для цього використовується логічна функція EOF( <файлова змінна>).
Вона приймає значення True, якщо досягнутий кінець файлу (наприклад зчитано останній елемент із файлу і далі даних немає) або у разі коли файл порожній. У будь-яких інших випадках значення функції EOF приймає значення False. Функція застосовується для відкритих файлів.
Немає коментарів:
Дописати коментар