关于变量数据类型的几点讨论(一)

variant 变量的格式有 OLE 定义,可以存放任何类型的数据,并以下图的格式用 16 个字节存放某些变量。

0-1

|

2-7

|

8-15

---|---|---

varType

|

Unused

|

Value

第 0 和 1 字节保存一个整数值,以指明在第 8-15 字节中存放的是何种类型的数据,第 2 到 7 字节一般情况下没有用,并且在大多数情况下,该变量的第 8 到 15 字节也不是全部用上。如:用一个 variant 变量保存了一个整形数,那么开始两个字节中的值为 2-vbinteger ,第 8 和 9 字节存放真实的 16 位值。

让我们写一段代码验证一下。

Dim v as variant ‘variant 是 vb 的默认数据类型,所以也可以定义为 dim v

v=1000

debug.print vartype(v) ‘ 输出结果 2 –vbinteger

另外换个方式检验:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Dim v As Variant

Dim i As Integer

v = 1000

CopyMemory i, v, 2

Debug.Print "0-1 位是 " & i

CopyMemory i, ByVal (VarPtr(v) + 8), 2

Debug.Print "8-9 位是 " & I

可以看到 8-9 位的结果是 1000 ,而 0-1 位为 2-vbinteger 。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus