Для роботи з файлами в розділі опису 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. Функція застосовується для відкритих файлів.
  
Немає коментарів:
Дописати коментар