Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆

12.4. Работа с файлами произвольного доступа.

Использование последовательных файлов не вызывает сложностей, если вы читаете весь файл или большие блоки смежных данных. Однако, в случае необходимости извлечения отдельных элементов данных, расположенных в различных местах файла, использование таких файлов становится не эффективным. В этом случае гораздо более полезным оказываются использование файлов с произвольным доступом.

В VB работа с файлами с произвольным доступом несколько отличается от работы с последовательными файлами. При работе с последовательными файлами достаточно определить переменную, в которой будут сохранены элементы данных. нет необходимости интересоваться , сколько символов содержит элемент. С другой стороны, в файле с произвольным доступом данные хранятся в виде набора записей постоянной длины, Таким образом, переменная, которую вы используете при считывании данных, должна иметь ту же длину , что и читаемая запись.

Первый шаг при организации чтения информации из файла с произвольным доступом состоит в описании переменной, в которую будут считаны данные. Для этого следует использовать не оператор Dim, а оператор Type , после которого вы должны определить тип переменной, которая описывается этим оператором.

Для создания типа переменной, следует написать блок, начинающейся с оператора Type и заканчивающийся оператором End Type, как это делается при объявлении переменных пользовательского типа. Этот блок записывается в секции <General> < Declarations>.

Type typename

elemenname1 As vartype

elemenname2 As vartype

End Type

typename – имя, которое вы желаете дать определяемому вами типу данных;

elemenname1 - имя элемента записи;

elemenname2

vartype – имя типа элемента записи.

Типы элементов записи – это стандартные типы данных. Следует учесть, что описания с помощью оператора Type не могут содержать строк переменной длины. Таким образом, любая строка в операторе Type должна записываться с помощью синтаксической формы, включающей указание длины строки. После определения типа переменной с помощью оператора (Type –End Type)можно объявлять переменные такого типа в программе с помощью оператора Dim.

Пример:

Type Costomer

Last Name As String * 30

FirstName As String * 25

Amount As Single

End Type

Dim NewVar As Costumer

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

Синтаксис оператора для открытия файла с произвольным доступом

имеют следующий вид:

Open filename For Random[Acsess - Доступ][ Lock - Блокировка] As #filenum Len = reglen

В этой синтаксической форме filename и filenum имеют тот же смысл что и в форме, используемой для последовательных файлов. Режим доступа к файлу должен быть определен как Random.

Acsess – позволяет задать права доступа к файлу.

Виды доступа и параметры приведены в таблице 1.

Таблица 12.1..

Доступ

Параметр, подставляемый вместо Acsess

Пример

Без указания

пусто

Open “Date Dat” For Random As intFH

Чтение

Read

Open “Date Dat” For Random Read As intFH

Запись

Write

Open “Date Dat” For Random Write As intFH

Чтение

и запись

(Read Write)

Open “Date Dat” For Random Read Write As intFH

Если права доступа не указаны, то по умолчанию используется Read Write.

Так как этот тип доступа обычно предназначен для работы с файлами, которые могут использоваться многими пользователями или приложениями, то следует обеспечить целостность данных при коллективном использовании. Для этого следует установить параметр Lock. Этот параметр т может принимать следующие значения:

Shared - файл может использоваться всеми процессами для считывания и записи;

Lock Read – никакой другой процесс не может считывать данные из файла;

Lock Write – никакой другой процесс не может осуществлять запись в файл.

Lock Read Write – никакой другой процесс не может считывать и записывать информацию в файл.

Данные параметры могут устанавливаться , если в данный момент не выполняются операции с эим файлом.

Выражение Len является новым по сравнению с ранее использовавшейся формой. Оно определяет длину одной записи в файле.Длина определяется значением аргумента reglen. Этот аргумент представляется в виде числового выражения целого типа, значение которого больше или равно нулю. Кроме того, значение reglen должно совпадать с длиной переменной пользовательского типа, используемой для чтения информации из файла.

Для определения размера переменной пользовательского типа можно использовать функцию Len. Затем используйте это значение в качесиве параметра reclen для файла с произвольным доступом.