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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1953|回复: 1

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

[复制链接]

51

主题

31

回帖

648

积分

用户组: 大·技术宅

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

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

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

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

Choose 函数

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

语法

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

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

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

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



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

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

数字型例题:
  1. Function ChooseLong cdecl(Index As Long, ...) As Long  
  2.   Dim arg As Any Ptr  
  3.   Dim i As Integer  
  4.    
  5.   arg = va_first()  
  6.   If Index = 1 Then  
  7.       Function = va_arg(arg, Long)  
  8.   Else  
  9.       For i = 1 To Index -1  
  10.           arg = va_next(arg, Long)  
  11.       Next  
  12.       Function = va_arg(arg, Long)  
  13.   End If  
  14.    
  15. End Function  
复制代码

注意:此为特殊函数,因为里面有 cdecl ,需要把此函数放在 VisualFreeBasic 的 FF_AppStart 模块里才可以编译。

或者在VFB函数库里新建一个才可以。


字符型例题:
  1. Function ChooseStr cdecl(Index As Long, ...) As String   
  2.   Dim arg As Any Ptr  
  3.   Dim i As Integer  
  4.    
  5.   arg = va_first()  
  6.   If Index = 1 Then  
  7.       Function = *va_arg(arg, ZString Ptr)  
  8.   Else  
  9.       For i = 1 To Index -1  
  10.           arg = va_next(arg, ZString Ptr)  
  11.       Next  
  12.       Function = *va_arg(arg, ZString Ptr)  
  13.   End If  
  14.    
  15. End Function  
复制代码
回复

使用道具 举报

1

主题

157

回帖

603

积分

用户组: 大·技术宅

UID
7535
精华
0
威望
0 点
宅币
445 个
贡献
0 次
宅之契约
0 份
在线时间
67 小时
注册时间
2021-10-16
发表于 2022-5-17 09:59:03 | 显示全部楼层

珍惜生命,果断回帖。
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-3-28 20:52 , Processed in 0.036827 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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