明经通道 Visual LISP 函数  
vlax-variant-type
 

确定变体的数据类型

(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-safearrayvlax-make-variantvlax-variant-change-typevlax-variant-value 函数。

明经通道 版权所有 未经许可 不得传播

 评论