Put 语句

将数据从变量写入磁盘文件。

语法

Put [ # ] filenumber, [ recnumber ], varname

Put 语句语法包含以下部分:

Part 说明
filenumber 必填。 任何有效的文件编号
recnumber 可选。 Variant (Long)。 开始写入的位置的记录编号(Random 模式文件)或字节编号(Binary 模式文件)。
varname 必填。 包含要写入磁盘的数据的变量的名称。

备注

通常使用 Get 从文件中读取使用 Put 写入的数据。

文件中的第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。 如果省略 recnumber,将写入最后 一个 GetPut 语句之后的下一个记录或字节,或者最后一个 Seek 函数指向。 必须包括分隔逗号,例如:

Put #4,,FileBuffer 

对于在 Random 模式中打开的文件,以下规则将适用:

  • 如果写入的数据长度小于 Open 语句的 Len 子句中指定的长度,则 Put 将写入记录长度边界上的后续记录。 一个记录的结尾与下一个记录的开头之间的空白将用文件缓冲区的现有内容进行填充。 由于无法准确地确定填充的数据的数量,因此通常最好将记录长度与要写入的数据的长度匹配。 如果要写入的数据的长度长于 Open 语句的 Len 子句中指定的长度,则会发生错误。

  • 如果要写入的变量是可变长度字符串, Put 将写入一个包含字符串长度的 2 字节描述符,再写入该变量。 Open 语句中的 Len 子句指定的记录长度必须至少比字符串的实际长度长 2 个字节。

  • 如果要写入的变量是数字类型VariantPut 将写入 2 个用于确定 VariantVarType 的字节,然后写入该变量。 例如,当写入 VarType 3 的 Variant 时,Put 将写入 6 个字节:2 个用于确定 VarType 3 (Long) 的 Variant 的字节和 4 个包含 Long 数据的字节。 Open 语句中的 Len 子句指定的记录长度必须至少比存储变量所需的实际字节数长 2 个字节。

    注意

    使用 Put 语句可将 Variant数组 写入磁盘,但不能使用 Put 将包含数组的标量 Variant 写入磁盘。 您也无法使用 Put 将对象写入磁盘。

  • 如果要写入的变量是 VarType 8 (String) 的 VariantPut 将写入 2 个用于确定 VarType 的字节和 2 个用于指示字符串长度的字节,然后写入字符串数据。 Open 语句中的 Len 子句指定的记录长度必须至少比字符串的实际长度长 4 个字节。

  • 如果要写入的变量是动态数组,Put 将写入一个描述符,其长度等于 2 加上维度数的 8 倍,即 2 + 8 * NumberOfDimensionsOpen 语句中的 Len 子句指定的记录长度必须长于或等于写入数组数据和数组描述符所需的所有字节的总长。 例如,在将数组写入磁盘时,下面的数组声明需要 118 个字节。

    Dim MyArray(1 To 5,1 To 10) As Integer 
    
    
  • 118 个字节的分布方式如下:描述符 () 2 + 8 * 2 18 个字节,100 个字节用于数据 (5 * 10 * 2) 。

  • 如果要写入的变量为固定大小的数组,则 Put 只会写入数据。 将不对磁盘写入描述符。

  • 如果要写入的变量是任何其他类型的变量(而不是可变长度字符串或 Variant),则 Put 只会写入变量数据。 Open 语句中的 Len 子句指定的记录长度必须长于或等于要写入的数据的长度。

  • Put 写入 用户定义类型的 元素,就像每个元素都是单独写入的,只是元素之间没有填充。 在磁盘上,使用 Put 写入的用户定义类型中的动态数组将以长度等于 2 加上维度数的 8 倍(即 2 + 8 * NumberOfDimensions)的描述符作为前缀。 Open 语句中的 Len 子句指定的记录长度必须长于或等于写入单独的元素(包括任何数组及其描述符)所需的所有字节的总长。

对于在 Binary 模式中打开的文件,所有 Random 规则都将适用,但有以下例外:

  • Open 语句中的 Len 子句无效。 Put 会连续将所有变量写入磁盘;也就是说,记录之间没有填充。

  • 对于用户定义的类型中的数组以外的任何数组, Put 仅写入数据。 未编写描述符。

  • Put 将写入不属于用户定义类型的元素的可变长度字符串(不带 2 字节长度的描述符)。 写入的字节数等于字符串中的字符数。 例如,以下语句会将 10 个字节写入 1 号文件:

      VarString$ = String$(10," ") 
      Put #1,,VarString$ 
    
    

示例

本示例使用 Put 语句将数据写入文件。 5 个用户定义类型的记录将写入文件。

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber ' Declare variables. 
' Open file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
For RecordNumber = 1 To 5 ' Loop 5 times. 
 MyRecord.ID = RecordNumber ' Define ID. 
 MyRecord.Name = "My Name" & RecordNumber ' Create a string. 
 Put #1, RecordNumber, MyRecord ' Write record to file. 
Next RecordNumber 
Close #1 ' Close file. 

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。