明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

對于變量數(shù)據(jù)分類的幾點討論(一)

[摘要]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。