Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual Basic 6.0~03.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

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

Довільний доступ також застосовується для витягання даних з 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]