技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 206|回复: 0
收起左侧

【VFB】实现Choose函数(FreeBasic可变参数数量用法例题)

[复制链接]

47

主题

68

帖子

594

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
466 个
贡献
1 次
宅之契约
0 份
在线时间
19 小时
注册时间
2017-12-26
发表于 2018-5-19 11:07:11 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
VisualBasic6 里有个 Choose函数 ,而在 FreeBasic里没有,要用到这函数,需要自己写一个。

Choose 函数

从参数列表中选择并返回一个值。

语法

Choose(index, choice-1[, choice-2, ... [, choice-n]])

Choose 函数的语法具有以下几个部分:

index 必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1 和可选择的项目数之间。

choice 必要参数,Variant 表达式,包含可选择项目的其中之一。



VisualBasic6 的参数是Variant ,而我们只能 数字写一个,字符写一个。

顺便我们可以学习到FreeBasic可变的参数数量用法。

数字型例题:
[Visual Basic] 纯文本查看 复制代码
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函数库里新建一个才可以。


字符型例题:
[Visual Basic] 纯文本查看 复制代码
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  

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2018-11-21 16:23 , Processed in 0.178239 second(s), 17 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表