VisualBasic6 里有個 Choose函數 ,而在 FreeBasic里沒有,要用到這函數,需要自己寫一個。
Choose 函數
從參數列表中選擇并返回一個值。
語法
Choose(index, choice-1[, choice-2, ... [, choice-n]])
Choose 函數的語法具有以下幾個部分:
index 必要參數,數值表達式或字段,它的運算結果是一個數值,且界于 1 和可選擇的項目數之間。
choice 必要參數,Variant 表達式,包含可選擇項目的其中之一。
VisualBasic6 的參數是Variant ,而我們只能 數字寫一個,字符寫一個。
順便我們可以學習到FreeBasic可變的參數數量用法。
數字型例題:
Function ChooseLong cdecl(Index As Long, ...) As Long
Dim arg As Any Ptr
Dim i As Integer
arg = va_first()
If Index = 1 Then
Function = va_arg(arg, Long)
Else
For i = 1 To Index -1
arg = va_next(arg, Long)
Next
Function = va_arg(arg, Long)
End If
End Function
注意:此為特殊函數,因為里面有 cdecl ,需要把此函數放在 VisualFreeBasic 的 FF_AppStart 模塊里才可以編譯。
或者在VFB函數庫里新建一個才可以。
字符型例題:
Function ChooseStr cdecl(Index As Long, ...) As String
Dim arg As Any Ptr
Dim i As Integer
arg = va_first()
If Index = 1 Then
Function = *va_arg(arg, ZString Ptr)
Else
For i = 1 To Index -1
arg = va_next(arg, ZString Ptr)
Next
Function = *va_arg(arg, ZString Ptr)
End If
End Function