
最近我回看以前记的关于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 | 5 | Double-precision floating-point number | |
vbCurrency | 6 | Currency value | |
vbDate | 7 | Date value | |
vbString | 8 | String | |
vbObject | 9 | Object | |
vbError | 10 | Error value | |
vbBoolean | 11 | Boolean value | |
vbVariant | 12 | Variant (used only with arrays of variants) | |
vbDataObject | 13 | A data access object | |
vbDecimal | 14 | Decimal value | |
vbByte | 17 | Byte value | |
vbLongLong | 20 | LongLong integer (ValID on 64-bit platforms only.) | |
vbUserdefinedType | 36 | Variants that contain user-defined types | |
vbarray | 8192 | Array |
Return | Value type | Constant | Variants only |
0 | EMPTY | V_EMPTY | Yes |
1 | NulL | V_NulL | Yes |
2 | Integer | V_INTEGER | |
3 | Long | V_LONG | |
4 | Single | V_SINGLE | |
5 | Double | V_DOUBLE | |
6 | Currency | V_CURRENCY | |
7 | Date/Time | V_DATE | Yes |
8 | String | V_STRING | |
9 | olE object or nothing | V_disPATCH | Yes |
10 | olE error | V_ERROR | Yes |
11 | Boolean | V_BOolEAN | |
12 | Variant List or array | V_VARIANT | |
13 | IUNKNowN (olE value) | V_IUNKNowN | Yes |
17 | Byte | V_BYTE | |
34 | user-defined object | V_LSOBJ | |
35 | Product object | V_PROdobJ | |
2048 | List | ||
8192 | Fixed array | ||
8704 | Dynamic array |
微信扫一扫
支付宝扫一扫
评论列表(0条)