确定变体的数据类型
(vlax-variant-type var)
参数
var
变量,其值为变体。
返回值
如果 var 包含变体,则返回下列整数之一:
0 未初始化 (vlax-vbEmpty)
1 不包含有效数据 (vlax-vbNull)
2 整数型 (vlax-vbInteger)
3 长整数型 (vlax-vbLong)
4 单精度浮点数 (vlax-vbSingle)
5 双精度浮点数 (vlax-vbDouble)
8 字符串 (vlax-vbString)
9 对象 (vlax-vbObject)
11 布尔值 (vlax-vbBoolean)
8192 + n 某种数据类型的 SafeArray (vlax-vbArray)。如,双精度数组 (vlax-vbDouble) 返回 8197 (8192 + 5)。
如果 var 不包含变体,则返回错误信息。
示例
将变体设为 nil,然后显示变体的数据类型:
_$ (setq varnil (vlax-make-variant nil))
#<variant 0 >
_$ (vlax-variant-type varnil)
0
将变体设为整数,并将变体显式定义为整型:
_$ (setq varint (vlax-make-variant 5 vlax-vbInteger))
#<variant 2 5>
_$ (vlax-variant-type varint)
2
将变体设为整数,然后显示变体的数据类型:
_$ (setq varint (vlax-make-variant 5))
#<variant 3 5>
_$ (vlax-variant-type varint)
3
请注意如果在 vlax-make-variant 中没有显式定义数据类型时指定整数,数据类型将被定义为长整数。
将变体设为字符串,然后显示变体的数据类型:
_$ (setq varstr (vlax-make-variant "ghost"))
#<variant 8 ghost>
_$ (vlax-variant-type varstr)
8
创建双精度的 SafeArray,将 SafeArray 指定为变体,然后显示变体的数据类型:
_$ (setq 4dubs (vlax-make-safearray vlax-vbDouble '(0 . 3)))
#<safearray...>
_$ (setq var4dubs (vlax-make-variant 4dubs))
#<variant 8197 ...>
_$ (vlax-variant-type var4dubs)
8197
变体类型值大于 8192,说明变体中包含某种类型的 SafeArray。从返回的数值中减去 8192 可以确定 SafeArray 的数据类型。在本例中,8197-8192=5 (vlax-vbDouble)。
将变量的值设为实数,然后调用 vlax-variant-type 检查数据类型:
_$ (setq notvar 6.0)
6.0
_$ (vlax-variant-type notvar)
; *** 错误:参数类型错误:variantp 6.0
该样例中返回错误信息,因为传递给 vlax-variant-type 的变量不包含变体。
参阅
vlax-make-safearray、vlax-make-variant、vlax-variant-change-type 和 vlax-variant-value 函数。
明经通道 版权所有 未经许可 不得传播 | 评论 |