Put (Файловый ввод/вывод)
 
Запись данных из буфера в файл

Синтаксис

Put #filenum As Integer, [position As LongInt], data As Any [, amount As Integer]
Put #filenum As Integer, [position As LongInt], data As String
Put #filenum As Integer, [position As LongInt], data() As Any

Использование

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, чтобы найти код успеха/ошибки без использования процедур обработки ошибок.

См. также