對于變量數據分類的幾點討論(一)
發表時間:2024-06-18 來源:明輝站整理相關軟件相關文章人氣:
[摘要]variant變量的格式有OLE定義,可以存放任何類型的數據,并以下圖的格式用16個字節存放某些變量。0-1 2-7 8-15 varType Unused Value 第0和1字節保存一個整數值,以指明在第8-15字節中存放的是何種類型的數據,第2到7字節一般情況下沒有用,并且在大多數情況下,該...
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。