關於VARIANT 資料型別的幾點討論(一)

來源:互聯網
上載者:User
變數|資料|資料類型 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。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。