call WriteFile(hFile, LngData, 4, byval 0&, byval 0&)Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, byval lpOverlapped As long) As Long
Open 语句
能够对文件输入/输出 (I/O)。语法Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]Open 语句的语法具有以下几个部分:部分 描述
pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。
mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。
access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。
lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。
filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。
reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。
说明对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。
Put 语句
将一个变量的数据写入磁盘文件中。语法Put [#]filenumber, [recnumber], varnamePut 语句的语法具有以下几个部分:部分 描述
filenumber 必要。任何有效的文件号。
recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),指明在此处开始写入。
varname 必要。包含要写入磁盘的数据的变量名。
说明通常用 Get 将 Put 写入的文件数据读出来。文件中的第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。如果省略 recnumber,则将上一个 Get 或 Put 语句之后的(或上一个 Seek 函数指出的)下一个记录或字节写入。所有用于分界的逗号都必须罗列出来,例如:Put #4,,FileBuffer下列规则适用于以 Random 方式打开的文件: 如果已写入的数据的长度小于 Open 语句的 Len 子句指定的长度,则 Put 以记录长度为边界写入随后的记录。记录终点与下一个记录起点之间的空白将用现有文件缓冲区内的内容填充。因为填入的数据量无法确定,所以一般说来,最好设法使记录的长度与写入的数据长度一致。如果写入的数据长度大于由 Open 语句的 Len 子句所指定的长度,就会导致错误发生。
如果写入的变量是一个可变长度的字符串,则 Put 先写入一个含有字符串长度的双字节描述符,然后再写入变量。Open 语句的 Len 子句所指定的记录长度至少要比实际字符串的长度多两个字节。
如果写入的变量是数值类型的 Variant 则 Put 先写入两个字节来辨认 Variant 的 VarType,然后才写入变量。例如,当写入 VarType 3 的 Variant 时,Put 会写入六个字节:其中,前两个字节辨认出 Variant 为 VarType 3 (Long),后四个字节则包含 Long 类型的数据。Open 语句的 Len 子句所指定的记录长度必须至少比储存变量所需的实际字节多两个字节。
注意 Put 语句可用来将一个 Variant 数组写入磁盘,但不能用来将包含数组的标量 Variant 写入磁盘。Put 也不能用来将对象写入磁盘。 如果写入的变量是 VarType 8 (String) 的 Variant,则 Put 先写入两个字节来辨认 VarType,接下来的两个字节则指出字符串的长度,然后再写入字符串数据。Open 语句的 Len 子句所指定的记录长度必须至少比实际的字符串长度多四个字节。
如果写入的变量是动态数组,则 Put 写入一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句的 Len 子句所指定的记录长度必须大于或等於为读出数组数据和数组描述符所需要的所有字节数总和。例如,在将数组写入磁盘时,下列数组声名需要 118 个字节的空间:
Dim MyArray(1 To 5,1 To 10) As Integer这 118 个字节的分配情况如下:18 个字节用于描述符 (2 + 8 * 2),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 将其直接写入,而无须有双字节描述符。写入的字节数等於字符串所包含的字符数。例如,下列语句将十个字节写入文件号为 1 的文件中:
VarString$ = String$(10, )
Put #1,,VarString$
VB传递参数默认是ByRef方式,传递变量的地址