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

Произвольный доступ

Читайте также:
  1. ECN И ПРЯМОЙ ДОСТУП
  2. nbsp;   Защита проекта от несанкционированного доступа реализуется в модуле Защита проекта.
  3. Алгоритм 2.36. Доступ к информации о задаче
  4. Алгоритм 2.37. Доступ к информации о ресурсе
  5. Вера – это то, что даёт Богу доступ к человеку.
  6. Глава 15. Тимчасовий доступ до речей і документів
  7. Доступ к внутренней базе фактов

Произвольный доступ также применяется для извлечения данных из 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 не позволяет объявлять типы переменных в модулях форм. Следовательно, новый тип переменных должен быть объявлен в секции (General)(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-файлов. Тем не менее многие файлы не укладываются в этот формат. Они могут иметь заголовки различной длины или другие отклонения в структуре файла. Возможно, реляционная база данных окажется более удобной. Эта тема рассматривается после двоичного режима доступа.

 


Дата добавления: 2015-07-20; просмотров: 74 | Нарушение авторских прав


Читайте в этой же книге: Пример использования циклов | ПОДСКАЗКА | Строковые переменные | Целые переменные | Логические переменные | Область видимости переменных | Массивы | Константы | Запись и чтение данных | Работа с ASCII-файлами |
<== предыдущая страница | следующая страница ==>
Последовательный доступ| Простейшая программа шифрования

mybiblioteka.su - 2015-2024 год. (0.007 сек.)