Базовий файловий ввід-висновок в delphi, delphi, компоненти delphi, вихідні коди delphi

Кожен програміст повинен вміти працювати з текстовими файлами, файлами, що містять записи, і файлами, які не мають певної структури або обробляються так, як якщо б вони не мали структури. Спочатку ми розглянемо текстові файли, оскільки цей тип файлів використовується найбільш часто.

Для отримання доступу до текстових файлів служать змінні типу Text:

Перш ніж можна буде приступити до роботи з файлом, за допомогою процедури AssignFile його потрібно присвоїти змінної типу Text. Ця процедура приймає два параметри: змінну файлу і ім'я файлу.

Після того як ім'я файлу присвоєно змінної файлу, необхідно визначити дії, які потрібно виконувати з файлом. Файл можна підготувати до читання, записи або доповненню.

Щоб підготувати файл до запису, необхідно використовувати процедуру Rewrite, яка завжди створить новий порожній файл. Якщо файл з таким же ім'ям файлу вже існує, процедура Rewrite спочатку видаляє існуючий файл, а потім замінює його новим порожнім файлом. Потім процедура відкриває файл і встановлює вказівник позиції на початок файлу.

При роботі з текстовими файлами процедурі Rewrite необхідно передавати тільки змінну типу Text:

Коли файл відкритий і готовий до запису, для запису тексту в текстовий файл можна використовувати стандартну процедуру WriteLn. При виконанні запису в текстовий файл першим параметром, переданим процедурі WriteLn, повинна бути змінна файлу:

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

Приклад програми записи рядки тексту в текстовий файл приведений в лістингу 8.1.

Лістинг 8.1. Запис тексту в текстовий файл

Для підготовки файлу до читання використовується процедура Reset. Ця процедура, подібно процедурі Rewrite, приймає тільки параметр типу файлу. Її можна вважати безпечною в тому сенсі, що вона успішно працює, якщо дисковод і / або каталог, вказаний в імені файлу, існує. На відміну від Rewrite, виконання процедури Reset буде неможливим, якщо файл, присвоєний змінної файлу, не існує.

Для виконання читання даних з текстового файлу можна використовувати процедуру ReadLn. При цьому першим переданим процедурі параметром повинна бути змінна файлу, а другим - строкова змінна, яка буде тимчасово зберігати значення, лічений з файлу.

Наступний приклад демонструє зчитування значень з текстового файлу і їх відображення на екрані.

Лістинг 8.2. Зчитування тексту з текстового файлу

Цей код буде успішно працювати до тих пір, поки існує файл data. txt. Якщо цей файл не існує, програма дасть збій. Щоб уникнути зупинки програми при відсутності файлу необхідно виконувати перевірку успішності відкриття файлу за допомогою процедури Reset.

Для з'ясування наявності помилок введення-виведення необхідно безпосередньо після виклику процедури введення-виведення, такий як Rewrite або Reset, викликати функцію IOResult. Функція IOResult повертає результат останньої виконаної операції введення-виведення. Якщо IOResult повертає 0, це означає, що операція була виконана успішно.

Для виконання перевірки вводу-виводу за допомогою функції IOResult необхідно спочатку відключити автоматичну перевірку введення-виведення. Для включення і відключення перевірки помилок введення-виведення служить директива компілятора SI. Зазвичай автоматичну перевірку введення-виведення відключають перед викликом процедури введення-виведення і знову включають відразу після виконання цього виклику:

Наступний приклад ілюструє виконання перевірки вводу-виводу і зчитування тексту з файлу тільки в разі успішного його відкриття.

Лістинг 8.3. Перевірка помилок введення-виведення