最近我回看以前记的关于Notes的笔记,发现在Notes bugs类别下,两条编号间隔一的竟然是相差无几的内容。
2. 'Type mismatch' occurs if an nested array e.g. when an item of ColumnValues is an array, is assigned to a variant or passed as an argument of a function.
4. When an item of ColumnValues is an array, 'Type mismatch' occurs if it is assigned to a variant, e.g.columns=entry.Columnvalues
这至少说明两件事。一是当我初次遇到以上错误,记录下之后,并未注意避免,甚至完全忘记了,下次再撞上时,还会当成新发现记录。二是我的英语保持在同样的水准上,在叙述同一件事情上风格基本一致。
对这个在同一地方跌倒两次的教训,我觉得有必要说一说。既可以提醒大家不要重蹈我的覆辙,也能加深我自己的印象,以免下次又记上一条重复的笔记。
LotusScript中Variant之来源
为了全面理解这个问题和多凑些字数,要从variant(变体型)说起。Visual Basic中变体型是一种能容纳各种数据类型的数据结构【注1】。技术上说,它是taggedunion(加标签的联合),占用十六字节的内存,前两字节保存数据类型的编码(即标签),第三至八字节为了对齐而空白,第九至十六共八个字节保存实际的数据(即联合)。前两字节的内容可以用VarType函数返回如下:
Constant |
Value |
Description |
vbEmpty |
0 |
Empty (uninitialized) |
vbNull |
1 |
Null (no valid data) |
vbInteger |
2 |
Integer |
vbLong |
3 |
Long integer |
vbSingle |
4 |
Single-precision floating-point number |
vbDouble |