Файли даних 1

Вся інформація, що міститься в змінних і масивах, зникає після закінчення роботи програми. Якщо вона може знадобитися в подальшому, то цю інформацію зберігають на жорсткому диску, дискеті або іншому носії, а при наступному запуску програми назад завантажують з зовнішнього носія в масиви або змінні. Такий запис на диску або іншому носії називається файлом даних. Крім файлів даних існують також виконувані файли (програми в машинних кодах з розширенням .exe або .com). Деякі мови і системи програмування (в тому числі з діалектів Паскаля - Borland Pascal і Delphi) дозволяють з власної програми запустити такий файл. Pascal ABC такою можливістю не має.

Файли об'єднані в групи (каталоги або папки). Щоб визначити, з яким файлом доведеться працювати, вказують його повне ім'я. Воно складається з декількох частин, наприклад:

Той каталог, в якому знаходиться наша програма, є робочим (поточним) каталогом. Це означає, що при зверненні до файлу даних, яка перебуває в такому каталозі, вказувати шлях не обов'язково.

Для використання файлу даних в програмі потрібно в розділі VAR описати файлову змінну (ф / п), в якій буде зберігатися інформація про цей файл (повне ім'я, довжина, дата і час створення і т.д.). Це опис різному для різних типів файлів. наприклад:

У файлах, описаних як типові, всі дані мають один і той же тип (вказаний при описі), так само як і в масивах. Тому в таких файлах зазвичай зберігають вміст масивів. Зберігати в типовому файлі текст незручно, так як всі рядки повинні бути однакової довжини. Для зберігання тексту з рядками різної довжини використовується текстовий файл. Для відділення одного рядка від іншої, в такому файлі кожен рядок закінчується символом, відповідним клавіші ENTER. На відміну від рядків у текстовому файлі можна зберігати і числа (але це менш економно, ніж в типовому файлі, де вони зберігаються в двійковому коді, а не посимвольний).

Щоб занести в файлову змінну ім'я файлу. використовується команда

assign (ф / п. 'повне ім'я файлу');

У цій команді можна не вказувати шлях для файлу, що знаходиться в робочому каталозі (там же, де і сама програма).

Щоб в файлову змінну потрапила вся інша інформація про фото, його потрібно відкрити за допомогою однієї з наступних команд:

reset (ф / п); - відкриває вже існуючий файл і встановлює вказівник на його початок (зазвичай так відкривають файл для читання, але в типовий файл можна і записувати. Запис відбувається замість наявних у файлі даних).

append (ф / п); - відкриває вже існуючий файл і встановлює вказівник на його кінець (для додавання інформації після кінця файлу).

rewrite (ф / п); - створює новий файл (якщо файл вже існує, він очищається).

Покажчик файлу зберігає місце в файлі, звідки ми можемо прочитати (або куди записати) інформацію. Кожна операція читання або запису переміщує покажчик до наступного запису.

Щоб прочитати інформацію з файлу. помістивши її в змінну, використовуються команди:

read (ф / п. список змінних); - Новомосковскет з типового і текстового файлу.

readln (ф / п. список змінних); - Новомосковскет з текстового файлу.

Якщо з текстового файлу Новомосковскются не окремі слова або числа, а вся рядок, то використовується тільки одна строкова змінна.

Щоб зберегти інформацію в файл з однієї або декількох змінних, використовуються команди:

write (ф / п. список змінних); - записує в типовий і текстовий файл.

writeln (ф / п. список змінних); - записує в текстовий файл з перекладом рядка.

Для переміщення по файлу (тільки типовим!) Використовується команда seek (ф / п, номер запису) ;. Нумерація записів у файлі ведеться з нуля. Щоб потрапити в кінець файлу для додавання нового запису, як номер у цій команді використовується функція filesize (ф / п), що визначає розмір файлу (не в байтах, а в записах даного типу).

При читанні з файлу невідомої довжини, можна перед читанням перевіряти, чи не скінчився чи ще файл, за допомогою функції eof (ф / п), яка дає true, якщо покажчик знаходиться після останнього запису. наприклад:

Після закінчення роботи з файлом його потрібно закрити командою close (ф / п) ;. Якщо не зробити цього, Pascal не зберегли зміни файлу на диску. Але і якщо не було змін, закрити файл рекомендується. Після цього файлова змінна і файлові буфери (область пам'яті, яку Pascal використовує при роботі з пам'яттю) звільняються.

Команда rename (ф / п, 'новое_імя') перейменовує файл, пов'язаний з файлової змінної. Файл повинен бути закритий.

Команда erase (ф / п) видаляє файл, пов'язаний з файлової змінної. Файл повинен бути закритий.

Не завжди файлові операції проходять успішно. Наприклад, при спробі прочитати з дискети, яку забули вставити в дисковод, з'являється повідомлення про помилку, і відбувається аварійне завершення програми. Подібні помилки краще попередити. Функція FileExists ( 'ім'я') повертає True, якщо на диску є файл з такою назвою (і шляхом), в іншому випадку повертає False. Її потрібно використовувати перед спробою звернення до вже існуючого файлу. Якщо потрібно створити новий файл, перед цим використовується функція CanCreateFile ( 'ім'я'). Якщо ім'я файлу або шлях вказані неправильно, або на диску немає місця, або з інших причин неможливо створити файл з таким ім'ям, вона повертає False.