VB5 實戰講座

每週一問: 挑戰您的 VB 功力 (進階篇, 98/01/18)


Q: 某一長整數(Long)其值為 &H01020304, 試問它在記憶體內部的結構是 (a) 還是 (b):
A: 結果是 (b), 以下是證明的方法:

1. 宣告以下兩種自訂型別:

    Private Type tLong
        L As Long
    End Type
    
    Private Type t4Bytes
        b4(0 To 3) As Byte
    End Type

2. 撰寫以下程式進行測試:

    Dim X1 As tLong
    Dim X2 As t4Bytes
    
    X1.L = &H01020304
    LSet X2 = X1 ' 將 X1 的記憶體複製到 X2
    Debug.Print X2.b4(0), X2.b4(1), X2.b4(2), X2.b4(3)

    結果印出: 4, 3, 2, 1

特別說明: 以上程式最有意思的地方是 LSet 敘述, 此一敘述可以直接複製「不同自訂型別」(如以上的 tLong 及 t4Bytes 自訂型別)的資料。

為了檢驗某一資料的內容(如本例的 Long), 我們可以宣告一個與該資料等長度的 Byte 陣列(如本例的 b4(0 To 3) As Byte), 然後再利用 LSet 將資料複製到 Byte 陣列中, 然後逐一檢驗資料每一個 Byte 的內容。