新觀念的 VB5 教本

每週一問: 挑戰您的 VB 功力 (初級篇, 98/04/05)


Q: Dim x, y, z As Integer

x = "10"
y = "13"
z = "13"

If x + y = x + z Then ...

結果以上判斷式會得到 False, 為什麼?

A: 請注意 Dim x, y, z As Integer 等於

    Dim x '不定型型別
    Dim y '不定型型別
    Dim z As Integer

所以 x + y 等於 "1013", 但 x + z 等於 "10" + 13 = 23, 當然 x + y 就不等於 x + z 了。

要避免以上的問題, 常見的方法是規規矩矩地宣告每一個變數的型別, 但如果您寫的是 VB Script 程式, 則由於 VB Script 的變數都只能宣告成 Dim x 格式的不定型型別, 所以採用的方法是:

    CInt(x) ' 將 x 轉成 Integer 型別, 然後傳回
    CInt(y) ' 將 y 轉成 Integer 型別, 然後傳回
    CInt(z) ' 將 z 轉成 Integer 型別, 然後傳回

除了 CInt 之外, 用來轉換資料型別的含有還有:

    CBool(X) 將變數 X 轉換成 Boolean 型別 
    CByte(X) 將變數 X 轉換成 Byte 型別 
    CCur(X)  將變數 X 轉換成 Currency 型別 
    CDate(X) 將變數 X 轉換成 Date 型別 
    CDbl(X)  將變數 X 轉換成 Double 型別
    CLng(X) 將變數 X 轉換成 Long 型別 
    CSng(X) 將變數 X 轉換成 Single 型別 
    CStr(X)  將變數 X 轉換成 String 型別