Put (File I/O)
 
将数据从缓冲区写入文件

语法

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 不允许。
注意:如果要从缓冲区中写入值,则不应将指针传递给缓冲区;而是应该在缓冲区中传递第一个变量。(这可以通过使用操作符 * (Value Of)取消引用指针来完成。)如果直接传递指针,则Put会将内存从指针变量放入,而不是其指向的内存。
amount
Put写入文件amount 个文件的连续变量,即它从data 的内存中写入( amount * SizeOf(data ) )个数据字节到文件中。如果省略amount ,则默认为1,这意味着Put只写入单个变量。

返回值

0成功;非零的错误。“disk full”被认为是错误,并返回代码3.之前写的“确切的”数据是不可用的,而且也不会真的有用。

说明

将二进制数据从缓冲区变量写入以BinaryRandom模式打开的文件。

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

  ' Write the bytes of the integer 'value'进入文件,使用文件号“f”
  '从文件开始(位置1)
  Put #f, 1, value

'关闭文件
Close #f


'创建一个整数数组
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


例子

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

  '从lpBuffer指向的内存中写入256个字节
  Put #hFile, , lpBuffer[0], Size

'关闭文件
Close #hFile

'释放赋值的内存
Deallocate lpBuffer

与QB差别

  • 可以像VB一样编写完整的数组,或者写入buffer 的内存位置的数据大小的倍数。
  • 可以用作FB中的函数,以查找返回的成功/错误代码,而无需使用错误处理过程。

参考