Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Довільний доступ






Довільний доступ також застосовується для витягання даних з ASCII - файлів, проте в порівнянні з послідовним доступом він відрізняється більшою гнучкістю. Довільний доступ дозволяє у будь-який момент перейти до будь-якої позиції файлу і прочитати необхідні дані. Що в результаті відбувається більше схоже на операції з базою даних, чим на роботу з послідовним файлом. Крім того, довільний доступ прискорює звернення до даних, оскільки при нім задається конкретна позиція файлового покажчика усередині файлу. Щоб відкрити файл для довільного доступу, задайте параметр Random:

Open " C: \data\test.txt" For Random As FileNo Len=10

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

Private Sub SaveFile()

Dim FileNo As Integer

Dim RecNo As Integer

Dim FName As Integer

Dim LName As Integer

Dim Lineout As Integer

 

FName = " Джейн"

LName = " Доуу"

Desc = " Чоловіка Джона Доуу"

LineOut = LName & FName & Desc

FileNo = FreeFile

RecNo = 1

 

Open " C: \test.txt" For Random As FileNo

Put #FileNo, RecNo, LineOut

Close FileNo

End Sub

 

та прочитаний запис виглядатиме так:

ДоуДжейн супруга Джона Доуу

Негарно! До того ж було б нераціональне писати код для витягання імен з цього рядка, оскільки у різних людей імена мають різну довжину. Замість цього в подібній ситуації слід оголосити свій власний тип змінної за допомогою ключових слів Type..End Type.

Оператор Type призначений для визначення нестандартних типів змінних. Він особливо корисний в ситуаціях на кшталт тієї, що описана вище. Проте перед тим, як використовувати оператор Type, необхідно переконатися, що в проекті є присутній хоч би один програмний модуль. Visual Basic не дозволяє оголошувати типи змінних в модулях форм. Отже, новий тип змінних має бути оголошений в секції(Declarations) програмного модуля. Додайте наступний фрагмент:

 

Type UserInfoRecord

LName As String * 15

FName As String * 15

Desc As String * 50

End Type

 

і приведіть процедуру форми до наступного виду:

 

Private Sub SaveFile()

Dim FileNo As Integer

Dim RecNo As Integer

Dim usr As UserInfoRecord

 

usr.FName = " Джейн"

usr.LName = " Доуу"

usr.Desc = " Чоловіка Джона Доуу"

 

FileNo = FreeFile

RecNo = 1

 

Open " C: \test.txt" For Random As FileNo Len = 80

Put #FileNo, RecNo, usr

Close FileNo

End Sub

 

Зараз я коротко поясню сенс оператора Type. Щоб створити тип змінної, слід вставити оголошення декількох змінних всередину конструкції Type..End Type. Тип, створений в нашому прикладі, ділиться на три самостійні строкові змінні - LName, FName і Desc. Зверніть увагу на те, що при оголошенні змінної вказується її довжина. LName і FName визначаються як строкові змінні з максимальною довжиною 15 символів, а довжина Desc може досягати 50 символів. Якщо скласти разом усі довжини рядків-компонентів, виходить 80 символів. Оскільки у файл записуватиметься саме ця змінна, сумарна довжина співпадає з розміром запису.

Щоб скористатися змінній типу User.InfoRecord, необхідно оголосити її з ключовим словом Dim, як і будь-яку іншу змінну. Тим самим ви повідомляєте Visual Basic, до якого типу вона відноситься. Потім можна звертатися до будь-якої з внутрішніх змінних, вказавши ім'я складеної змінної, за ним - оператор " точка" і ім'я внутрішньої змінної. Внутрішній змінній можна присвоїти потрібне значення або ж прочитати її оператором Get#. Якщо запустити попередній фрагмент, запис зберігається у файлі. На мал. 8.4 показано, як виглядає вміст цього файлу в програмі Notepad.

 

Мал. 8.4. Запис в текстовому файлі.

 

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.