Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
24
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

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

Для работы с файлом в режиме произвольного доступа его нужно открыть оператором Open, который имеет вид:

Open ИмяФайла For Random [Access Операция] [Блокировка]

As [#] Дескриптор[Len = ДлинаЗаписи]

где ИмяФайла – выражение строкового типа, представляющее имя файла.

Примеры:

1. "D:\MЭО15\Файлы\Цена.dat";

2. ”Цена.dat”

В первом случае указана папка, в которой хранится файл Цена.dat, а во втором предполагается, что он хранится в текущей папке.

Операция – одно из следующих значений:

Read (только чтение),

Write (только запись),

Read Write (чтение и запись).

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

Блокировка – используется в многозадачном режиме (например, в сети), запрещая доступ к файлу другим процессам, может принимать одно из следующих значений:

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

Lock Read – запрет чтения из файла для других процессов;

Lock Write – запрет записи в файл для других процессов;

Lock Read Write –запрет чтения и записи для других процессов.

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

Дескриптор – выражение целого типа, определяющее номер канала ввода/вывода для открываемого файла, (например,1). Символ # перед дескриптором можно опустить.

ДлинаЗаписи – выражение целого типа, определяющее размер элемента в байтах (например, 25). Часто для задания длины записи используют встроенную функцию Len(х), которая определяет размер аргумента х. При открытии файла в качестве х указывается имя переменной пользовательского типа, которая будет использоваться для работы с файлом.

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

1) Open txtИмя_файла For Random As # 1 Len= Len (udtСведения)

2) Open “Цена.dat” For Random Access Read As #2 Len = 25

В первом случае открывается файл, имя которого указано в текстовом поле txtИмя_файла. Длина записей в файле совпадает с размером переменной пользовательского типа udtСведения. Файл открывается как для чтения так и записи, поскольку параметр Access отсутствует. Для работы с файлом назначен первый канал ввода/вывода.

Во втором примере открывается файл с именем Цена.dat, который находится в текущей папке. Предполагается только читать информацию из него. Длина каждой записи 25 байтов. Все действия с этим файлом будут выполняться во втором канале ввода/вывода.

Для записи данных в файл используется оператор Put, а для чтения – оператор Get. Эти операторы имеют вид:

Put #Дескриптор, НомерЗаписи, Переменная

Get #Дескриптор, Номер Записи, Переменная

Действие оператора Put состоит в следующем: значение, которое хранится в поле памяти переменной, пересылается из оперативной памяти в файл, определяемый дескриптором, и в файле записывается на том месте, которое задано номером записи.

Оператор Get имеет противоположное назначение. Он указывает, что нужно найти запись под данным номером в файле, который определен дескриптором. А затем переслать содержимое этой записи из файла в поле памяти, которое занимает указанная переменная в оперативной памяти.

Примеры операторов Put и Get:

  1. Put #1, i, udtСведения;

  2. Get #1, i, udtСведения;

В первом случае осуществляется запись в файл, связанный с первым каналом ввода/вывода, информации, которая хранится в оперативной памяти в переменной пользовательского типа udtСведения. Эта информация записывается в файл на место с номером i.

Во втором случае происходит обратный процесс: с i-того места в файле считывается информация и пересылается в оперативную память в переменную udtСведения. Для закрытия файлов используется оператор Close, который имеет вид:

Close [#] [СписокДескрипторов]

Если список дескрипторов отсутствует, то закрываются все открытые файлы.

Примеры оператора Close:

1) Close # 1,2,5

2) Close

В первом случае закрываются только файлы, для которых были назначены каналы ввода/вывода 1, 2 и 5, а во втором – все файлы.

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

Name СтароеИмя As НовоеИмя

Копирование файла осуществляется с помощью оператора FileCopy, который имеет вид:

FileCopy ИмяИсходногоФайла, ИмяЦелевогоФайла

Чтобы удалить файл применяют оператор Kill, который имеет вид:

Kill ИмяУдаляемогоФайла

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

Примеры операторов переименования, копирования и удаления файлов:

1) Name "Февраль.dat" As "Март.dat"

2) FileCopy "Налоги.dat", "Удержания.dat"

3) Kill "Налоги.dat"

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

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

intКол_зап = LOF(x)/Len (udtСведения)

Здесь LOF(х) – встроенная функция VB, с помощью которой определяется общая длина файла, связанного с каналом х (LOF – сокращение от англ. Length Of File – длина файла).