對于變量數(shù)據(jù)分類的幾點討論(一)
發(fā)表時間:2024-06-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]variant變量的格式有OLE定義,可以存放任何類型的數(shù)據(jù),并以下圖的格式用16個字節(jié)存放某些變量。0-1 2-7 8-15 varType Unused Value 第0和1字節(jié)保存一個整數(shù)值,以指明在第8-15字節(jié)中存放的是何種類型的數(shù)據(jù),第2到7字節(jié)一般情況下沒有用,并且在大多數(shù)情況下,該...
variant變量的格式有OLE定義,可以存放任何類型的數(shù)據(jù),并以下圖的格式用16個字節(jié)存放某些變量。
0-1
2-7
8-15
varType
Unused
Value
第0和1字節(jié)保存一個整數(shù)值,以指明在第8-15字節(jié)中存放的是何種類型的數(shù)據(jù),第2到7字節(jié)一般情況下沒有用,并且在大多數(shù)情況下,該變量的第8到15字節(jié)也不是全部用上。如:用一個variant變量保存了一個整形數(shù),那么開始兩個字節(jié)中的值為2-vbinteger,第8和9字節(jié)存放真實的16位值。
讓我們寫一段代碼驗證一下。
Dim v as variant ‘variant是vb的默認(rèn)數(shù)據(jù)類型,所以也可以定義為dim v
v=1000
debug.print vartype(v) ‘輸出結(jié)果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位的結(jié)果是1000,而0-1位為2-vbinteger。