КАТЕГОРИИ: Архитектура-(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, що має наступний синтаксис:
Ім’яФайлу — це або рядок символів, взятий у лапки, або вираз, значенням якого є рядок символів. Він являє собою шлях (маршрут) до файлу, що відкривається. Якщо зазначене тільки ім'я файлу (наприклад, «Tecm.txt»), файл повинен знаходитися в поточному каталозі (папці). РежимРоботи — це одне з трьох ключових слів:
ДескрипторФайлу — це будь-яке ціле число від 1 до 511. Воно служить ідентифікатором файлу в програмі. 3акpиття файлів. Усі відкриті текстові файли закриваються однаково — за допомогою оператора Close. Його синтаксис наступний:
СписокДескрипторів — це записані через кому дескриптори (ідентифікатори) файлів, що повинні бути закриті. Якщо СписокДескрипторів відсутній, будуть закриті усі відкриті файли. Приклад 4.1. Допустимо, що в папці Тести знаходяться 2 файли з іменами Tecml.txt і Tecm2.txt. У них міститься інформація, необхідна для створення третього файлу з ім'ям Результат.txt. Цей файл повинен бути поміщений у папку Результати. Допустимо також, що обидві згадані папки знаходяться в папці VB на пристрої С. Наступні рядки програмного коду демонструють відкриття і закриття зазначених файлів:
Запис у файл. Записати дані в текстовий файл можна двома способами:
Обидва оператори записують дані у файл текстовими рядками. Текстовий рядок (не слід плутати поняття текстового рядка з поняттям рядка як типу даних String) (рядок тексту) — це послідовність символів, що закінчується знаком переходу на новий текстовий рядок чи знаком повернення каретки (коди 13 і 10 ASCII). Текстовий файл являє собою послідовність текстових рядків. Синтаксис операторів запису в текстовий файл однаковий:
ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для запису файлу. СписокЗначень — це записані через Роздільник значення (чи вирази, значення яких обчислюються, зокрема змінні). Якщо СписокЗначень відсутній, у файл буде записаний порожній рядок. Логіка роботи операторів Write і Print різна. Оператор Write. Роздільником у СпискуЗначень є кома. СписокЗначень проглядається послідовно, і елементи цього списку записуються в один текстовий рядок файлу через кому. Елементи типу String беруться у лапки. Після запису останнього елемента записується символ переходу на новий рядок. Оператор Print. Елементи СпискуЗначень у цьому операторі повинні бути розділені або крапкою з комою, або комою. Від цього залежить, як вони будуть записані в текстовий рядок файлу:
Крім того, у СпискуЗначень оператора Print можуть бути присутніми наступні функції:
Оператор Print зручний для ретельного редагування тексту вихідного файлу, а оператор Write краще застосовувати в тому випадку, коли вихідний файл використовуватиметься надалі як вхідний для інших програм. Приклад 4.2. Напишемо програму запису в текстовий файл з ім'ям РікНародження.txt наступних рядків: (У кожнім рядку — прізвище, ім'я і рік народження.) Випадок 1. Будемо мати на увазі, що вихідний файл надалі буде використовуватися в роботі інших програм. Тому в якості оператора запису текстового рядка скористаємося оператором Write:
Випадок 2. А тепер створимо текстовий файл з ім'ям РікНародження2.txt, що містить ту ж інформацію, що і попередній файл з ім'ям РікНародження1.txt. Але для його створення ми використовуємо не оператор Write, а оператор Print:
Як будуть виглядати текстові рядки файлів РікНародження1.txt і РікНародження2.txt, можна довідатися, відкривши ці файли для читання, прочитавши їх і надрукувавши кожен рядок на екранній формі. (Про це ми поговоримо трохи пізніше.) Результати цієї роботи представлені на мал. 4.1:
Читання з файлу. Читати дані з текстового файлу можна різними способами:
Оператор Input. Оператор Input має наступний синтаксис:
ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для читання файлу. СписокЗмінних — це записані через кому змінні будь-якого типу. Наприклад: Неважко догадатися, що в кожному текстовому рядку файлу кількість і тип значень повинні збігатися з кількістю і типом змінних у СпискуЗмінних. Якщо ж такого збігу не буде, результатом читання може виявитися щось несподіване для Вас. Наприклад, якщо Ви помилково замість типу String припишете змінній який-небудь числовий тип, замість рядка символів (прізвища, імені і т.п.) Ви одержите 0. Найчастіше читання з текстового файлу робиться циклічно, за допомогою оператора циклу з умовою (Do While... Loop чи Do Until... Loop). Умовою закінчення циклу є спроба прочитати дані після читання останнього текстового рядка. Ця спроба приводить до того, що значенням функції EOF (Ім'я функції EOF складено з перших букв словосполучення end of file. Єдиним аргументом функції є дескриптор файлу, відкритого для читання.) буде True (Істина). Приклад 4.3. Представимо програму, що поміщає всі прізвища, імена і дати народження з приведеного вище файлу з ім'ям «РікНародження1.txt» у 3 вікна списку — об'єкти класу ListBox екранної форми:
Оператор Line Input. Оператор Line Input має наступний синтаксис:
ДескрипторФайлу — це ціле число, що збігається з ідентифікатором відкритого для читання файлу. Результатом роботи оператора Line Input є присвоєння Змінній значення — всього чергового текстового рядка файлу. Приклад 4.4. Як приклад роботи оператора Line Input розглянемо читання одного з двох файлів прикладу 4.2:
Результати роботи програми коду 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.3. Слід зазначити, що для текстового поля, в яке поміщається вміст файлу, варто встановити значення властивості MultiLine рівним True, а значення властивості ScrollBars рівним Vertical. Дивлячись на мал. 4.3, неважко догадатися про призначення цих властивостей: властивість MultiLine забезпечує багаторядкову видачу даних у текстове поле, а властивість ScrollBars дозволяє встановити на текстовому полі смуги прокручування (у даному випадку, вертикальну смугу).
Нові поняття:
Дата добавления: 2014-12-23; Просмотров: 1040; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |