Запись данных из буфера в файл
Синтаксис
Использование
Put #filenum, position, data [, amount]
varres = Put (#filenum, position, data [, amount])
Параметры
filenum
Значение , передаваемое в
Open
, когда файл был открыт.
position
Является позицией, в которой Put должна начать
писать в файле. Если файл был открыт For Random, позиция в записях,
иначе это задается в байтах. Если параметр опущен, запись начинается с
текущего положения файлового указателя. Позиция базируется на 1: то есть
первая запись или байт в файле находится в положении 1.
Если position опущена или нулевая (0), запись в
файл начнется с текущей позиции в файле.
data
Является буфером, откуда данные записываются. Это может
быть числовая переменная, строка, массив или пользовательский тип. Операция
не будет пытаться передать на диск все значение переменной, если указывается
amount.
При записи массивов,
data должна сопровождаться пустой парой
скобок: '
()'.
Put запишет все данные из массива.
amount
не допускается.
При записи
String(строк), количество
записанных байтов такое же, как количество байт в данной строке.
amount
не допускается.
Примечание: Если вы хотите записать значения из буфера, вы не должны
передавать указатель на буфер; вместо этого вы должны передать первую
переменную в буфере. (Это может быть сделано путем разыменования указателя с
помощью
Оператора * (Значение из).)
Если вы передаете указатель непосредственно, то
Put
запишет сам указатель, а не память, на которую он указывает.
amount
Создает
Put , пишущий в файл
amount
последовательность переменных в файл - т.е. пишет
( amount * SizeOf(data) )
байт данных, начиная с расположения
data в памяти, в файл.
Если параметр
amount опушен, то по умолчанию
1, Это
означает, что
Put просто пишет одну переменную.
Возвращаемое значение
0 в случае успеха; ненулевое в случае ошибки. "disk full"
рассматривается как ошибка, и приводит к коду возврата 3.
"exact" количество написанных данных не доступно и не будет действительно
полезным в любом случае.
Описание
Записывает двоичные данные из буфера переменной в файл, открытый в
Binary
или
Random режиме.
Put может использоваться как функция , которая будет возвращать
0
в случае успеха или код ошибки в случае неудачи.
Для файлов, открытых в
Random режиме,
размер в байтах данных для записи должен соответствовать указанному размеру
записи.
Пример
' Создание переменных для номера файла и значения
для записи
Dim As Integer f
Dim As Long value
' Получаем первый свободный номер файла
f = FreeFile()
' Открываем файл "file.ext" для
бинарного использования, с номером файла в "f"
Open "file.ext" For Binary As #f
value= 10
' Записываем байты целого числа 'value' в
файл, используя номер файла "f"
' в начало файла
(с 1 позиции)
Put #f, 1, value
' Закрываем файл
Close #f
' Создаем массив чисел с типом Integer
Dim buffer(1 To 10) As Integer
For i As Integer = 1 To 10
buffer(i) = i
Next
' Получаем первый свободный номер файла
Dim f As Integer
f = FreeFile()
' Открываем файл "file.ext" для
бинарного использования, с номером файла в "f"
Open "file.ext" For Binary As #f
' Записываем массив в файл,
используя номер файла "f"
' в начало файла (с 1
позиции)
Put #f, 1, buffer()
' Закрываем файл
Close #f
Example
Dim As Byte Ptr lpBuffer
Dim As Integer hFile, Counter, Size
Size = 256
lpBuffer = Allocate(Size)
For Counter = 0 To Size-1
lpBuffer[Counter] = (Counter And &HFF)
Next
' Получаем первый свободный
номер файла
hFile = FreeFile()
' Открываем файл "test.bin" в
бинарном режиме для записи
Open "test.bin" For Binary Access Write As #hFile
' Записываем 256 байт из памяти, на которую
указывает lpBuffer
Put #hFile, , lpBuffer[0], Size
' Закрываем файл
Close #hFile
' Освобождаем занятую память
Deallocate lpBuffer
Отличия от QB
- Put может записать полностью массивы, как в VB или,
наоборот, записать кратное размеру данных из расположения памяти buffer.
- Put может быть использован в качестве функции в FB, чтобы
найти код успеха/ошибки без использования процедур обработки ошибок.
См. также