Читает данные из открытого файла на диске в переменную.
Get [#]номерФайла, [номерЗаписи], имяПеременной
Параметры
номерФайла
Обязательный. Любой допустимый номер
файла.
номерЗаписи
Необязательный. Тип Variant(Long). Номер
записи (для файлов в режиме Random) или номер байта (для файлов в режиме
Binary), с которого следует начать чтение.
имяПеременной
Обязательный. Допустимое имя переменной, в которую следует поместить
считанные данные.
Замечания
Данные, считываемые с помощью инструкции Get, обычно
записываются в файл с помощью инструкции Put.
Первой записи (или
байту) файла соответствует номер 1, второй (или второму) 2 и т.п. Если аргумент
номерЗаписи опущен, читается запись (или байт), на которую был установлен
указатель после выполнения последней инструкции Get или Put (или
переведен при последнем вызове функции Seek). Наличие
запятых-разделителей является обязательным, например:
Get #4,,FileBuffer
Для файлов, открытых в режиме Random, применимы следующие
правила:
Даже если длина данных, подлежащих чтению, меньше длины записи,
указанной в предложении Len инструкции Open, инструкция Get
начинает чтение каждой следующей записи с начала этой записи. Пространство между
концом одной записи и началом следующей записи заполняется текущим содержимым
буфера файла. Поскольку объем данных, используемых для заполнения, не может быть
определен с достаточной степенью уверенности, рекомендуется, чтобы длина записи
совпадала с длиной читаемых данных.
Если данные считываются в строку
переменной длины, инструкция Get сначала считывает 2-байтовый дескриптор,
содержащий длину строки, а затем данные, которые следует поместить в эту
переменную. Таким образом, длина записи, указанная в предложении Len
инструкции Open, должна быть по крайней мере на 2 байта больше, чем
фактическая длина этой строки.
Если данные считываются в переменную
Variant числового типа, инструкция Get сначала считывает 2 байта,
указывающие подтип (VarType) этой переменной, а затем данные, которые
следует поместить в эту переменную. Например, при чтении переменной
Variant подтипа VarType 3 инструкция Get считывает 6 байт:
2 байта, указывающие подтип переменной Variant как VarType 3
(Long), и 4 байта, содержащие значение типа Long. Длина записи,
указанная в предложении Len инструкции Open, должна по крайней
мере на 2 байта превышать фактический размер, необходимый для размещения этой
переменной.
С помощью инструкции Get можно считать массив типа
Variant с диска, однако нельзя прочитать скаляр типа Variant,
содержащий массив. Кроме того, инструкцию Get нельзя использовать для
чтения объектов с диска.
Если данные считываются в переменную типа
Variant подтипа VarType 8 (String), инструкция Get сначала
считывает 2 байта, указывающие VarType, потом 2 байта, указывающие длину
строки, а затем содержимое строки. Длина записи, указанная в предложении
Len инструкции Open, должна быть по крайней мере на 4 байта
больше, чем фактическая длина этой строки.
Если данные считываются в
динамический массив, инструкция Get сначала считывает дескриптор, длина
которого равняется (2 + 8 * числоРазмерностей) байт. Длина записи, указанная в
предложении Len инструкции Open , должна быть больше либо равна
сумме всех байтов, необходимых для размещения массива данных и дескриптора
массива. Например, для размещения описанного ниже массива требуется 118
байт.
Dim MyArray(1 To 5,1 To 10) As Integer118 байт распределяются следующим образом: 18 для дескриптора (2 + 8 * 2) и 100 байт для данных (5 * 10 * 2).
VarString = String(10," ") Get #1,,VarString
Пример
В данном примере инструкция Get используется для чтения
данных из файла в переменную. Предполагается, что файл TESTFILE содержит
пять записей определенного пользователем типа Record.
Type Record ' Тип, определенный пользователем. ID As Integer Name As String * 20 End Type Dim MyRecord As Record, Position ' Объявляет переменную. ' Открывает файл произвольного доступа. Open "TESTFILE" For Random As #1 Len = Len(MyRecord) ' Читает из файла с помощью инструкции Get. Position = 3 ' Определяет номер записи. Get #1, Position, MyRecord ' Читает третью запись. Close #1 ' Закрывает файл.