Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Текстові файли




Вже в ранніх діалектах мови Бейсік (наприклад, у QBasic) використовувалися засоби для роботи з файлами. Зрозуміло, ці засоби збереглися й у сучасних версіях мови Visual Basic. Це оператори для роботи з текстовими файлами.

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

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

Оператори мови, призначені для роботи з послідовними файлами, дозволяють:

  • відкрити файл для доступу до його вмісту, — або для запису в нього нових даних, або для читання записаної в ньому інформації;
  • внести у відкритий файл чергову порцію інформації (записати дані у файл із програми);
  • витягти дані з відкритого файлу (прочитати чергову порцію інформації) і помістити їх у програму;
  • закрити файл після того, як робота над ним завершиться.

Відкриття файлу. Для відкриття текстового файлу використовується оператор Open, що має наступний синтаксис:

Open Ім’яФайлу For РежимРоботи As #ДескрипторФайлу

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

Якщо зазначене тільки ім'я файлу (наприклад, «Tecm.txt»), файл повинен знаходитися в поточному каталозі (папці).

РежимРоботи — це одне з трьох ключових слів:

  • Output — якщо файл відкривається для запису в нього даних починаючи з першої позиції (при записі вся стара інформація, що малася в ньому, буде стерта);
  • Append — якщо файл відкривається для запису в нього даних не з першої, а з кінцевої позиції, тому вся стара інформація, що малася в ньому, буде збережена;
  • Input — якщо файл відкривається для читання з нього текстових даних.

ДескрипторФайлу — це будь-яке ціле число від 1 до 511. Воно служить ідентифікатором файлу в програмі.

3акpиття файлів. Усі відкриті текстові файли закриваються однаково — за допомогою оператора Close. Його синтаксис наступний:

Close # [ СписокДескрипторів ]

СписокДескрипторів — це записані через кому дескриптори (ідентифікатори) файлів, що повинні бути закриті. Якщо СписокДескрипторів відсутній, будуть закриті усі відкриті файли.

Приклад 4.1. Допустимо, що в папці Тести знаходяться 2 файли з іменами Tecml.txt і Tecm2.txt. У них міститься інформація, необхідна для створення третього файлу з ім'ям Результат.txt. Цей файл повинен бути поміщений у папку Результати. Допустимо також, що обидві згадані папки знаходяться в папці VB на пристрої С. Наступні рядки програмного коду демонструють відкриття і закриття зазначених файлів:

Код 4.1.
Open "C:\VB\Тести\Тест1.txt" For Input As #1 Open "C:\VB\Тести\Тест2.txt" For Input As #2 Open "C:\VB\Результати\Результат.txt" For Oput As #3

Запис у файл. Записати дані в текстовий файл можна двома способами:

  1. за допомогою оператора Write;
  2. за допомогою оператора Print.

Обидва оператори записують дані у файл текстовими рядками.

Текстовий рядок (не слід плутати поняття текстового рядка з поняттям рядка як типу даних String) (рядок тексту) — це послідовність символів, що закінчується знаком переходу на новий текстовий рядок чи знаком повернення каретки (коди 13 і 10 ASCII).

Текстовий файл являє собою послідовність текстових рядків.

Синтаксис операторів запису в текстовий файл однаковий:

Write # ДескрипторФайлу, [ СписокЗначень ] Print # ДескрипторФайлу, [ СписокЗначень ]

ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для запису файлу.

СписокЗначень — це записані через Роздільник значення (чи вирази, значення яких обчислюються, зокрема змінні). Якщо СписокЗначень відсутній, у файл буде записаний порожній рядок.

Логіка роботи операторів Write і Print різна.

Оператор Write. Роздільником у СпискуЗначень є кома. СписокЗначень проглядається послідовно, і елементи цього списку записуються в один текстовий рядок файлу через кому. Елементи типу String беруться у лапки. Після запису останнього елемента записується символ переходу на новий рядок.

Оператор Print. Елементи СпискуЗначень у цьому операторі повинні бути розділені або крапкою з комою, або комою. Від цього залежить, як вони будуть записані в текстовий рядок файлу:

  • якщо Роздільник — це крапка з комою (;), значення будуть записуватися підряд, без проміжків між ними;
  • якщо Роздільник — це кома (,), значення будуть записуватися в 14-символьні зони виводу.

Крім того, у СпискуЗначень оператора Print можуть бути присутніми наступні функції:

  • Spc(n) — для вставки n пробілів між значеннями в текстовому рядку;
  • Tab(n) — для вказівки номера n позиції для запису наступного значення.

Оператор Print зручний для ретельного редагування тексту вихідного файлу, а оператор Write краще застосовувати в тому випадку, коли вихідний файл використовуватиметься надалі як вхідний для інших програм.

Приклад 4.2. Напишемо програму запису в текстовий файл з ім'ям РікНародження.txt наступних рядків:
«Іванов», «Іван», 1989
«Кузьмук», «Микола», 1990
«Гаврилюк», «Степан», 1986
«Сушко», «Людмила», 1985

(У кожнім рядку — прізвище, ім'я і рік народження.)

Випадок 1. Будемо мати на увазі, що вихідний файл надалі буде використовуватися в роботі інших програм. Тому в якості оператора запису текстового рядка скористаємося оператором Write:

Код 4.2

Випадок 2. А тепер створимо текстовий файл з ім'ям РікНародження2.txt, що містить ту ж інформацію, що і попередній файл з ім'ям РікНародження1.txt. Але для його створення ми використовуємо не оператор Write, а оператор Print:

Код 4.3

Як будуть виглядати текстові рядки файлів РікНародження1.txt і РікНародження2.txt, можна довідатися, відкривши ці файли для читання, прочитавши їх і надрукувавши кожен рядок на екранній формі. (Про це ми поговоримо трохи пізніше.)

Результати цієї роботи представлені на мал. 4.1:

а) б)
Мал. 4.1. Результат читання текстового файлу: а — записаного за допомогою оператора Write; б — записаного за допомогою оператора Print

Читання з файлу. Читати дані з текстового файлу можна різними способами:

  • за допомогою операторів Input і Line Input;
  • за допомогою функції Input.

Оператор Input. Оператор Input має наступний синтаксис:

Input #ДескрипторФайлу СписокЗмінних

ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для читання файлу.

СписокЗмінних — це записані через кому змінні будь-якого типу. Наприклад:
Прізвище$, Ім'я$, РікНародження%
(Нагадаємо, що суфікси $ і % вказують на тип змінних — String і Integer відповідно. Їх можна використовувати замість оголошення типу змінних за допомогою оператора Dim.)

Неважко догадатися, що в кожному текстовому рядку файлу кількість і тип значень повинні збігатися з кількістю і типом змінних у СпискуЗмінних. Якщо ж такого збігу не буде, результатом читання може виявитися щось несподіване для Вас. Наприклад, якщо Ви помилково замість типу String припишете змінній який-небудь числовий тип, замість рядка символів (прізвища, імені і т.п.) Ви одержите 0.

Найчастіше читання з текстового файлу робиться циклічно, за допомогою оператора циклу з умовою (Do While... Loop чи Do Until... Loop). Умовою закінчення циклу є спроба прочитати дані після читання останнього текстового рядка. Ця спроба приводить до того, що значенням функції EOF (Ім'я функції EOF складено з перших букв словосполучення end of file. Єдиним аргументом функції є дескриптор файлу, відкритого для читання.) буде True (Істина).

Приклад 4.3. Представимо програму, що поміщає всі прізвища, імена і дати народження з приведеного вище файлу з ім'ям «РікНародження1.txt» у 3 вікна списку — об'єкти класу ListBox екранної форми:

Код 4.4
Мал. 4.2. Читання текстового файлу за допомогою оператора Input і розміщення даних у трьох вікнах списку

Оператор Line Input. Оператор Line Input має наступний синтаксис:

Line Input #ДескрипторФайлу Змінна

ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для читання файлу.
Змінна — змінна типу String чи Variant.

Результатом роботи оператора Line Input є присвоєння Змінній значення — всього чергового текстового рядка файлу.

Приклад 4.4. Як приклад роботи оператора Line Input розглянемо читання одного з двох файлів прикладу 4.2:

Код 4.5

Результати роботи програми коду 4.5 були показані на мал. 4.1 (а — для файлу РікНародження1.txt і б — для файлу РікНародження2.tхt).

Функція Input — це функція двох аргументів. Перший її аргумент — це кількість символів, який треба прочитати із вхідного файлу. Другий аргумент — ідентифікатор (дескриптор) файлу, відкритого для читання. Значення, що повертається, - прочитаний текст у вигляді символьного рядка.

Найчастіше цю функцію використовують для одночасного читання всього текстового файлу і розміщення його в текстовому полі екранної форми. Для цього необхідно з'ясувати розмір файлу в символах. Робиться це за допомогою функції LOF (Ім'я функції LOF складено з перших букв словосполучення length of file — довжина файлу. Значення функції LOF має тип Long.), єдиним аргументом якої є ідентифікатор файлу, відкритого для читання.

Приклад 4.5. Як приклад розглянемо 4 рядки коду, що служать для того, щоб записати в об'єкт Text1 класу Текстове поле вміст усього текстового файлу з ім'ям РікНародження1.txt і ідентифікатором #1:

Код 4.6

Результат роботи цієї програми — на мал. 4.3.

Слід зазначити, що для текстового поля, в яке поміщається вміст файлу, варто встановити значення властивості MultiLine рівним True, а значення властивості ScrollBars рівним Vertical. Дивлячись на мал. 4.3, неважко догадатися про призначення цих властивостей: властивість MultiLine забезпечує багаторядкову видачу даних у текстове поле, а властивість ScrollBars дозволяє встановити на текстовому полі смуги прокручування (у даному випадку, вертикальну смугу).

Мал. 4.3. Текстове поле, у яке поміщений вміст текстового файлу

Нові поняття:




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 997; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.032 сек.