今天在MSDN上看到了这么一句雷人的话。

VCHelp之乐天蛋黄派 2011-08-16 05:03:23
Get 在读出用户定义类型的元素时,好象是单独地读出每一个元素,只是不在元素之间进行填充。在磁盘上,(用 Put 写入的)用户定义的类型的动态数组之前有一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录长度必须大于或等於读出个别元素(包括任何数组及其描述符在内)所需的全部字节数总和。

以上这段话是MSDN里关于VB中 Get 函数的说明。 注意那个“好象”。
...全文
151 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiyulin 2011-08-20
  • 打赏
  • 举报
回复
我觉得也应该是翻译的问题
snowman1101 2011-08-19
  • 打赏
  • 举报
回复
能发下原文的地址吗?拿来研究下
嗷嗷叫的老马 2011-08-18
  • 打赏
  • 举报
回复
以前也注意到了的,哈哈.
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zdingyun 的回复:]
那LZ是标题党罗!
[/Quote]

不是,微软的技术文档向来以权威著称,但用词里出个“好象”。感觉被雷了一下。
zdingyun 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hb19820102 的回复:]
引用 1 楼 worldy 的回复:
翻译过来的,有时候不是那么准确,要看看英文是怎么写的


VB的东东,没必要那么较针^_^, 简单得我都懒得和它较针哈。
[/Quote]

那LZ是标题党罗!
  • 打赏
  • 举报
回复
翻译问题吧,看原文对照一下
赵4老师 2011-08-17
  • 打赏
  • 举报
回复
Get 语句


将一个已打开的磁盘文件读入一个变量之中。

语法

Get [#]filenumber, [recnumber], varname

Get 语句的语法具有以下几个部分:

部分 描述
filenumber 必要。任何有效的文件号。
recnumber 可选。Variant (Long)。记录号(Random 方式的文件)或字节数(Binary 方式的文件),以表示在此处开始读出数据。
varname 必要。一个有效的变量名,将读出的数据放入其中。


说明

通常用 Put 将 Get 读出的数据写入一个文件。

文件中第一个记录或字节位于位置 1,第二个记录或字节位于位置 2,依此类推。若省略 recnumber,则会读出紧随上一个 Get 或 Put 语句之后的下一个记录或字节(或读出最后一个 Seek 函数指出的记录或字节)。所有用于分界的逗号都必须罗列出来,例如:

Get #4,,FileBuffer

下列规则适用于以 Random 方式打开的文件:

如果要读出的数据的长度小于 Open 语句的 Len 子句中所指定的长度,Get 会在某个边界之内读出随后的记录,在这里,边界的长度等于记录的长度。将此文件缓冲区内的现有内容填入到一个空间之内,该空间介于一个记录的结尾与下一个记录的开头之间。因为无法确定填入的数据量,所以,应设法使记录的长度与读出的数据长度一致,这通常是个好办法。


如果读出的变量是一个可变长度字符串,则 Get 语句先读出一个含有字符串长度的双字节描述符,然后读出放入变量中的数据。所以,Open 语句中的 Len 子句所指定的记录长度必须至少比字符串的实际长度多两个字节。


如果读出的变量是一个数值类型的 Variant,则 Get 先读出两个字节,识别 Variant 的 VarType,然后读出放入此变量中的数据。例如,在读出 VarType 3 的 Variant 时,Get 读出六个字节:前两个字节说明 Variant 为 VarType 3 (Long),后四个字节则包含 Long 类型数据。Open 语句中的 Len 子句所指定的记录长度必须至少比储存变量所需的实际长度多两个字节。
注意 可以使用 Get 语句从磁盘中读出一个 Variant 数组,但不能使用它读出包含数组的标量 Variant。也不能使用 Get 从磁盘中读出对象。

如果读出的变量是 VarType 8 (String) 的 Variant,则 Get 先读出两个字节,识别 VarType,接下来的两个字节指出字符串的长度,然后读出字符串数据。Open 语句中的 Len 子句所指定的记录长度必须比实际字符串的长度至少多四个字节。


如果读出的变量是一个动态数组,则 Get 会读出一个描述符,其长度等于 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)。

如果读出的变量是一个大小固定的数组,则 Get 只读出数据。它不读出描述符。


如果读出的变量是任何其他类型的变量(不是可变长度的字符串或 Variant£©,则 Get 只读出变量数据。Open 语句中的 Len 子句所指定的记录长度必须大于或等於要读出的数据的长度。


Get 在读出用户定义类型的元素时,好象是单独地读出每一个元素,只是不在元素之间进行填充。在磁盘上,(用 Put 写入的)用户定义的类型的动态数组之前有一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录长度必须大于或等於读出个别元素(包括任何数组及其描述符在内)所需的全部字节数总和。
对于以 Binary 方式打开的文件,Random 的所有规则都适用,但以下情况除外:

当 Open 语句中的 Len 子句不起作用时,Get 连续从磁盘中读出所有变量;也就是说,两个记录之间没有任何填充。


对于任何不属于用户定义的类型的数组,Get 只读出数据。它不会读出描述符。


Get 读出可变长度字符串,不管这些字符串是否具有长度为 2 字节的描述符,它们都不是用户定义的类型的元素。所读出的字节数等於字符串已包含的字符数。例如,下列语句从文件号为 1 的文件中读出十个字节:
VarString = String(10, )
Get #1,,VarString

Get 语句示例
本示例使用 Get 语句来将数据从文件读到变量中。示例中假设 TESTFILE 文件中含有五个用户自定义类型的记录。

Type Record ' 定义用户自定义的数据类型。
ID As Integer
Name As String * 20
End Type

Dim MyRecord As Record, Position ' 声明变量。
' 为随机访问打开样本文件。
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
' 使用 Get 语句来读样本文件。
Position = 3 ' 定义记录号。
Get #1, Position, MyRecord ' 读第三个记录。
Close #1 ' 关闭文件。

  • 打赏
  • 举报
回复
[Quote=引用 1 楼 worldy 的回复:]
翻译过来的,有时候不是那么准确,要看看英文是怎么写的
[/Quote]

VB的东东,没必要那么较针^_^, 简单得我都懒得和它较针哈。
熊孩子开学喽 2011-08-17
  • 打赏
  • 举报
回复
"好像"此处做"比如"解释.

ttsffgg 2011-08-16
  • 打赏
  • 举报
回复
寫這個函數的程序員忘記了 就寫了個好像
chinaboyzyq 2011-08-16
  • 打赏
  • 举报
回复
咸清 2011-08-16
  • 打赏
  • 举报
回复
worldy 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 hb19820102 的回复:]
Get 在读出用户定义类型的元素时,好象是单独地读出每一个元素,只是不在元素之间进行填充。在磁盘上,(用 Put 写入的)用户定义的类型的动态数组之前有一个描述符,其长度等于 2 加上 8 乘以维数,即 2 + 8 * NumberOfDimensions。Open 语句中的 Len 子句所指定的记录长度必须大于或等於读出个别元素(包括任何数组及其描述……
[/Quote]

翻译过来的,有时候不是那么准确,要看看英文是怎么写的

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧