Файлы с произвольным доступом
Для работы с файлом в режиме произвольного доступа его нужно открыть оператором 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 – длина файла).
Дата добавления: 2020-10-14; просмотров: 410;