Реферат: Це сукупність даних однакового типу


Файл – це сукупність даних однакового типу. Таке визначення збігається з визначенням масиву, але, на відміну від останнього, файл зберігають на диску, кількість даних у файлі при його описуванні не вказується, елементи файла не мають індексів, що ускладнює роботу з ними. З цієї точки зору файл сприймається як фізична структуру. Якщо розглядати файл як абстраговану структуру даних у програмі, то в такому випадку файл називають логічним.

Робота з файлом має такі етапи:

Оголошення файлової змінної;

Зв’язування файлової змінної з і менем наявного файла або файла, що створюється;

Відкриття файла;

Обробка файла;

Закриття файла.

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

Текстовий файл є сукупністю символьних рядків змінної довжини. Кожен рядок завершується маркером кінця рядка – спеціальною парою керуючих символів: #13 (повернення каретки) та #10 (переведення рядка). Наприкінці файла записується маркер кінця файла керуючий символ #26.

Під файловою змінною (покажчик) в програмуванні розуміється деякепосилання, яке може однозначно привести нас до якого-небудь об'єкту. Покажчики бувають різні. Наприклад, покажчик на елемент пам'яті, в якій зберігаються які-небудь дані. У цьому випадку покажчик зберігає адресу цього осередку. Покажчики існують у багатьох операціях, без них доступ до даних неможливий. У реальному житті покажчик можна порівняти з адресою будинку, з номером кімнати. Якщо нам відомо, куди йти, то ми туди прийдемо і зробимо те, що потрібно. Якщо покажчик (адреса) втрачено, знайти місце проблематично, а то і зовсім неможливо. При роботі з файлами теж використовуються своєрідні покажчики. Справа в тому, що робота з файлом ділиться на кілька етапів. Спочатку файл потрібно відкрити. Без цього не можна ні прочитати з нього дані, ані записати їх у нього. Коли файл відкрито, з його вмістом можна виконувати необхідні дії. Після закінчення роботи файл потрібно закрити. Залізне правило: не забувайте закривати відкриті файли! Весь процес можна побачити і в реальному житті: відкрив двері, зайшов, щось зробив, вийшов, закрив двері. Якщо файл не закрити, можна його заблокувати: система буде думати, що він зайнятий програмою, проте програма вже завершила роботу і втратила покажчик на нього. Результат: відкрити уже не вийде.

^ 1. Оголошення покажчика.

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

var імя_покажчика: File of тип_даних;

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

var імя_покажчика: File of Byte;

Замість Byte можна написати Char. З останнім працювати зручніше, якщо у файлі записаний текст. Оскільки найчастіше доводиться працювати саме з текстовими файлами, був введений окремий тип даних - TextFile:

var F: TextFile;

Покажчики найчастіше називають буквою F (file).

^ 2. Встановлення зв'язку з файлом.

Цей етап можна порівняти з пошуком дверей потрібного Вам номера. Зв'язок встановлюється процедурою AssignFile ():

AssignFile (показчик, "шлях до файлу ');

Перший параметр - покажчик, який ми оголосили в п.1. Шлях до файлу може як абсолютним, так і відносним. Після цієї операції ми готові до відкриття файлу.

^ 3. Відкриття файлу.

Відкриття - не така проста операція. Вона може виконуватися в трьох різних режимах.

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

^ Reset - відкриття файлу лише для читання. Покажчик встановлюється в початок файлу.

Append - додавання. Використовується для запису даних у кінець файлу, не зачіпаючи існуючі дані. Покажчик ставиться в кінець.

Що за покажчик тут використовується? Це не той, який дає нам доступ до файлу. Уявіть внутрішній вміст файлу як текст. У текстовому редакторі є курсор, який знаходиться в якійсь конкретній позиції. З файлом те ж саме: є невидимий курсор, за допомогою якого можна працювати з вмістом. Якщо потрібно записати дані у файл, курсор ставиться в потрібну позицію і далі виконується запис. Якщо потрібно прочитати - подорожуємо у потрібне місце і, крок за кроком, зчитуємо потрібні дані. Покажчик при цьому кожен раз рухається вперед. Рано чи пізно він досягне кінця файла.

Функції ^ OpenFile немає - замість неї є 3 функції з назвами, наведеними вище: Rewrite (), Reset (), Append (). Єдиний обов'язковий параметр всіх цих функцій - покажчик на наш файл, причому той, за допомогою якого вже встановлено зв'язок з допомогою AssignFile ().

^ 4. Закриття файлу.

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

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

^ Приклад 1. Створимо порожній текстовий файл.

var F: TextFile;

AssignFile (F, 'new.txt');

Rewrite (F);

CloseFile (F);

Ми оголосили змінну F типу "текстовий файл", далі прив'язали її до файлу new.txt, зробили перезапис файлу і закрили його. У результаті отриманий порожній файл.

Набір з трьох команд необхідно виконувати при роботі з будь-яким файлом.

Для читання і запису існують процедури зі зрозумілими іменами Read () і Write (). Процедури незвичайний: у них необмежене число параметрів. У обох перше параметрів передається покажчик на файл, а далі - список змінних (або значень), з якими потрібно виконати дану операцію. Команда Read () читає один запис з файлу і заносить її в змінну, яка вказана другим параметром. При цьому покажчик зсувається на одну позицію. Якщо вказати кілька змінних - у них будуть прочитані значення по порядку. Функція автоматично розпізнає роздільники значень - прогалини, що дозволяє з легкістю зчитувати кілька значень з файлу. Запис працює аналогічно: всі передані значення послідовно записуються у файл.

^ Пам'ятайте, що поки Ви не закрили файл, внесені зміни в ньому не зберігаються!

Приклад 2. Запис у файл.

var F: TextFile; a, b: Byte;

AssignFile (F, 'new.txt');

Rewrite (F);

a: = 2;

b: = 10;

Write (F, '1 ', a, '3', b);

CloseFile (F);

У даному прикладі показано використання Write (). У результаті в файлі буде рядок "123 10". Були записані як явно задані рядки, так і значення змінних.


^ Приклад 3. Зчитування з файлу двох чисел.

var F: TextFile; a, b: Byte;

AssignFile (F, 'new.txt');

Reset (F);

Read (F, a, b);

CloseFile (F);

ShowMessage (IntToStr (a) + ';' + IntToStr (b));


У даному прикладі файл відкривається для читання (Reset) і з нього зчитуються записані там значення в змінні a і b. На екран буде виведене повідомлення "123; 10".

Процедури Read () і Write () не перевіряють типів даних, які використовуються при роботі з файлом. Так що можна напряму записувати числа, не перетворюючи їх у рядки, і назад з рядків числа при читанні.

Набагато частіше потрібно працювати з файлами порядково, тобто зчитувати і записувати цілі рядки. Реакція функцій на прогалини-роздільники буде тільки вставляти палиці в колеса. На допомогу приходять функції ReadLn () і WriteLn (). Ln - скорочення від line (рядок). ReadLn () читає цілий рядок з файлу, а WriteLn () записує дані і вставляє після них ознаки кінця поточного рядка і початку нової . У іншому робота цих функцій точно така ж.

Коли виконується читання файлу, вказівник ("курсор") переміщається автоматично. Зрозуміло, що в якийсь момент ми прийдемо до кінця файлу і далі читати вже буде нічого. Щоб відстежити це стан, використовується функція EOF () - скорочення від end of file (кінець файлу). Передаємо покажчик на файл і дізнаємося, чи дійшли до кінця. Що може бути простіше? Таким чином, читання файлу легко записується в цикл.

Приклад 4. Зчитування всього файлу в ListBox.

var F: TextFile; S: String;

ListBox1. Clear;

AssignFile (F, 'new.txt');

Reset (F);

while not EOF (F) do

begin

Read Ln (F, S);

ListBox1. Items. Add (S)

end;

CloseFile (F);

Розберемо приклад порядково:

Очищаємо ListBox. Зв'язуємося з файлом new.txt. Відкриваємо файл для читання (покажчик на початку файлу). До тих пір, поки не дійшли до кінця файлу ... ... читаємо чергову рядок в змінну S. .. і додаємо цей рядок у ListBox. Закриваємо файл.

Приклад 5. Збереження всіх рядків з поля Memo в текстовий файл.

var F: TextFile; I: Integer;

AssignFile (F, 'test.txt');

Rewrite (F);

for I: = 0 to Memo1. Lines. Count -1 do

WriteLn (F, Memo1. Lines [I]);

CloseFile (F);

Встановили зв'язок з файлом. Перезаписали файл. Проходимо по всіх рядках Memo1 ... ... і переписуємо кожен рядок у файл. Закриваємо файл.

Вважаю за необхідне нагадати, що операції збереження і завантаження з файлу в Memo і ListBox передбачені. Еквіваленти для даних прикладів:

ListBox1. Items. LoadFromFile ('new.txt');

Memo1. Lines. SaveToFile ('test.txt');
еще рефераты
Еще работы по разное