Реферат: Це сукупність даних однакового типу
Файл – це сукупність даних однакового типу. Таке визначення збігається з визначенням масиву, але, на відміну від останнього, файл зберігають на диску, кількість даних у файлі при його описуванні не вказується, елементи файла не мають індексів, що ускладнює роботу з ними. З цієї точки зору файл сприймається як фізична структуру. Якщо розглядати файл як абстраговану структуру даних у програмі, то в такому випадку файл називають логічним.
Робота з файлом має такі етапи:
Оголошення файлової змінної;
Зв’язування файлової змінної з і менем наявного файла або файла, що створюється;
Відкриття файла;
Обробка файла;
Закриття файла.
Файли класифікують за типом компонентів і за методом доступу до них. За типом компонентів розрізняють текстові та бінарні(двійкові) файли, а за методом доступу – файли послідовного і прямого доступу. Текстові файли призначені для збереження текстів, а бінарні використовуються для зберігання даних різних типів.
Текстовий файл є сукупністю символьних рядків змінної довжини. Кожен рядок завершується маркером кінця рядка – спеціальною парою керуючих символів: #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');
еще рефераты
Еще работы по разное
Реферат по разное
Календарно-тематичний план лекцій з дисципліни "Педіатрія, дитячі інфекції" для студентів VI курсу педіатричного відділення медичного факультету №3 в осінньому семестрі 2011 2012 навчального року
18 Сентября 2013
Реферат по разное
1. Назва модуля
18 Сентября 2013
Реферат по разное
Удк 338. 436 + 529. 6
18 Сентября 2013
Реферат по разное
Сімнадцята сесія Знам’янської міської ради шостого скликання р І шенн я
18 Сентября 2013