FileSystem.FilePutObject(Int32, Object, Int64) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Записывает значения переменных в файл на диске. Функция My
обеспечивает более высокие показатели производительности и быстродействия в операциях файлового ввода-вывода в сравнении с FilePutObject
. Для получения дополнительной информации см. FileSystem.
public static void FilePutObject (int FileNumber, object Value, long RecordNumber = -1);
static member FilePutObject : int * obj * int64 -> unit
Public Sub FilePutObject (FileNumber As Integer, Value As Object, Optional RecordNumber As Long = -1)
Параметры
- FileNumber
- Int32
Обязательный. Любой допустимый номер файла.
- Value
- Object
Обязательный. Допустимое имя переменной, содержащей данные для записи на диск.
- RecordNumber
- Int64
Необязательный элемент. Номер записи (файлы, открытые в режиме Random
) или номер байта (файлы, открытые в режиме Binary
), с которого начинается запись.
Примеры
В этом примере функция используется FilePutObject
для записи строки в файл.
Sub WriteData()
Dim text As String = "test"
FileOpen(1, "test.bin", OpenMode.Binary)
FilePutObject(1, text)
FileClose(1)
End Sub
Комментарии
Функция FilePutObject
используется вместо FilePut
, чтобы избежать неоднозначности во время компиляции, если тип Object
передается вместо другого типа, например Integer
, Long
, Short
и т. д.
FilePutObject
записывает и считывает дескрипторы, описывающие объект . Если вы планируете Variant
записать тип, FilePutObject
является обязательным. При возникновении сомнений при использовании объекта для второго параметра рекомендуется всегда использовать FilePutObject
и FileGetObject
.
FilePutObject
является допустимым только в Random
режиме и Binary
.
Данные, записанные с использованием FilePutObject
, обычно считываются с помощью FileGetObject
.
Первая запись или байт в файле находится в позиции 1, вторая запись или байт находится в позиции 2 и т. д. Если опустить RecordNumber
, FilePutObject
записывает следующую запись или байт после последней FileGetObject
функции или FilePutObject
(или записи или байта, на которые указывает последняя Seek
функция).
Аргумент StringIsFixedLength
определяет, интерпретирует ли функция строки как переменную или фиксированную длину. FilePutObject
не записывает дескриптор длины, если аргумент имеет значение True
. Если вы используете StringIsFixedLength
= True
с FilePutObject
, необходимо сделать то же самое с FileGetObject
, а также убедиться, что строка инициализирована ожидаемой длиной.
Случайный режим
Для файлов, открытых в Random
режиме , применяются следующие правила:
Если длина записываемых данных меньше длины, указанной в
RecordLength
предложенииFileOpen
функции,FilePutObject
последующие записи записываются на границы длины записей. Пространство между концом одной записи и началом следующей записи заполняется существующим содержимым буфера файлов. Так как объем данных заполнения не может быть точно определен, обычно рекомендуется, чтобы длина записи соответствовала длине записываемых данных. Если длина записываемых данных больше длины, указанной вRecordLength
предложенииFileOpen
функции, создается исключение.Если записываемая переменная является объектом, содержащим числовой тип, записывает два байта,
FilePutObject
идентифицирующиеVarType
объект , а затем записывает переменную. Например, при записи объекта, содержащего целое число,FilePutObject
записывает шесть байтов: два байта, которые идентифицируют объект какVarType(3)
(Integer
), и четыре байта, содержащие данные. Длина записи, указанная параметромRecordLength
вFileOpen
функции, должна быть по крайней мере на два байта больше фактического числа байтов, необходимых для хранения переменной.Если записываемая переменная является объектом, содержащим строку,
FilePutObject
записывает двухбайтовый дескриптор, определяющийVarType(8)
объект , двухбайтовый дескриптор, указывающий длину строки, а затем записывает строковые данные. Длина записи, указанная параметромRecordLength
вFileOpen
функции, должна быть не менее чем на четыре байта больше фактической длины строки. Если вы хотите поместить строку без дескриптора, следует передатьTrue
StringIsFixedLength
в параметр , а строка, которую вы читаете, должна иметь правильную длину.Если записываемая переменная является массивом, длина записи, указанная предложением
RecordLength
вFileOpen
функции, должна быть больше или равна сумме всех байтов, необходимых для записи данных массива и дескриптора массива. Дескриптор задает ранг массива, размер и нижние границы для каждого ранга. Его длина в 2 плюс 8 раз превышает количество измерений: (2 + 8 * NumberOfDimensions).
Двоичный режим
Для файлов, открытых в Binary
режиме Random
, применяются все правила режима, кроме:
- Предложение
RecordLength
в функции не имеет никакогоFileOpen
действия.FilePutObject
Записывает все переменные на диск непрерывно, то есть без заполнения между записями.