Файлы произвольного доступа

Произвольный (Random) доступ для ввода или вывода применяется в случае, когда записи в файле имеют фиксированную длину.

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

Open имя_файлаFor Random [Access доступ] [Lock] As # номер [Len = длина_записи]

В квадратных скобках указаны необязательные параметры.

ПараметрAccess позволяет задать тип доступа к открываемому файлу. Если он не указан, то по умолчанию используется значение ReadWrite (возможно как чтение, так и запись).

Параметр Lock позволяет задать права доступа к открытому файлу и указывается, если один и тот же файл может использоваться несколькими пользователями или приложениями. Он может принимать следующие значения:

1) Shared (общий) – файл может использоваться всеми процессами для считывания и для записи;

2) LockRead (закрыт для чтения) – никакой другой процесс не может считывать данные из файла;

3) LockWrite (закрыт для записи) – никакой другой процесс не может записывать данные в файл;

4)LockReadWrite (закрыт для чтения и записи) – никакой другой процесс не может ни считывать, ни записывать данные в файл;

Параметр Len задает длину одной записи в байтах

Для чтения данных используется операторGet:

Get # номер , номер_записи, переменная

Для записи – оператор Put:

Put # номер , номер_записи, переменная

В качестве примера рассмотрим следующую задачу. Необходимо создать файл с именем Spisok.dat, в котором каждая запись состоит из двух полей. Первое поле для записи фамилии (типа String длиной 20 символов), вторая для записи личного номера (типа Ineger).

Для того, чтобы в одной записи сохранить значения данных различных типов используем в программе пользовательский тип данных, которому присвоим наименование Person. Кроме того, опишем массив Mass из 100 элементов типа Person.

Type Person

FamAs String* 20

Nom As Integer

End Type

DimMass(1 to 100) AsPerson

В процедуре, которая открывает файл для записи сформированного массива с фамилиями и номерами будут следующие операторы

Private Sub Command1_Click()

Open “Spisok.dat”For Random As #1 Len = 22

For i =1 to 100

Put #1, i , Mass(i)

Nexti

Close #1

End Sub

Предположим, что в дугой процедуре нужно открыть файл Spisok.dat, прочитать записи и вывести значения полей каждой записи на печать.

Private Sub Command2_Click()

DimzapAsPerson

DimnomerAs Integer

Open “Spisok.dat”For Random As #1 Len = 22

nomer = 1

Do until EOF(1)

Get #1, nomer , zap

Printzap.Fam, zap.Nom

nomer = nomer +1

Loop

Close #1

End Sub

 

Примечание. В приведенных выше примерах операторе Open параметру Len присвоено значение 22. Это длина в байтах считываемой записи (20 байт занимает поле Fam и 2 байта поле Nom). Можно было бы поступить по-другому, воспользовавшись функциейLen(переменная), указав в качестве аргумента имя zap – переменной введенного нами типа Person.:

Open “Spisok.dat”For Random As #1 Len = Len(zap)

Файлы прямого доступа можно использовать и для записи стандартных типов данных. Длина каждой записи при этом определяется типом данных (см. табл. 3).









Дата добавления: 2016-02-11; просмотров: 828;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.