开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2713|回复: 17
收起左侧

[分享] 关于一个易语言自身BUG引发的心情失落24小时

[复制链接]
发表于 2022-5-30 15:24:38 | 显示全部楼层 |阅读模式   陕西省商洛市
本帖最后由 进销存 于 2022-5-30 15:28 编辑

事情起因很简单,我发现了一个关于选择命令的BUG,原码放在最后。然后我打算把这个BUG上报到易语言论坛,可是我太久没有登陆过了,忘了密码,最重要的是忘了安全问题。于是这变成了一个无解的问题,目前没有发现能绕开安全问题的登陆方法。于是我就想,不行咱重zc一个,没想到居然要邀请码,咱穷在深山无人问,怎么会有那种高端的东西,登不了,只好来这里发牢骚。

BUG是这么回事。是关于选择命令。

我们先来看选择命令的官方解释:

    调用格式: 〈通用型〉 选择 (逻辑型 用作选择的逻辑值,通用型 待选择项一,通用型 待选择项二) - 系统核心支持库->其他
    英文名称:iif
    根据所提供参数的值,返回两部分中的其中一个。本命令为初级命令。
    参数<1>的名称为“用作选择的逻辑值”,类型为“逻辑型(bool)”。如果该值为真,将返回第一个待选择项,否则将返回第二个待选择项。
    参数<2>的名称为“待选择项一”,类型为“通用型(all)”。如果给定逻辑值为真,命令将返回本选择项。
    参数<3>的名称为“待选择项二”,类型为“通用型(all)”。如果给定逻辑值为假,命令将返回本选择项。

这里我们需要明白,无论逻辑值真假,它都会返回其中一个选择项。这个选择项是通用型的。可以返回各种常量、变量,甚至执行一条命令,取得命令的返回值。但是命令没有返回值,那么它就不返回值。也就是说,无论何时,它都不该即执行了选择项一,又执行了选择项二。
在附件的这个例子里,选择命令无分真假,两个选择项它都执行了。
而在另一个场景里,我把列表框换成了两个编辑框,让它在两个编辑框里分别显示任意文本,结果它什么都没有执行。或者说,编辑框里什么也没有显示。

选择(单选框1.选中,编辑框1.内容=“OK”,编辑框2.内容=“YES”)

就是这条命令。

欢迎大家来喷我,给我上一课。

选择命令的BUG.e

2.36 KB, 下载次数: 11, 下载积分: 精币 -2 枚

点评

一看你写的代码就知道,选择()返回的一定是个逻辑型的值   河南省安阳市  发表于 2022-5-30 15:56

评分

参与人数 2好评 +1 精币 +3 收起 理由
神女软件定制 + 1 这可不是bug
伤心猪大肠 + 1 + 2 支持开源~!感谢分享

查看全部评分

结帖率:78% (7/9)
发表于 2022-6-1 03:44:53 | 显示全部楼层   北京市北京市
。。。你把他当作三目运算符了,就这么简单
用如果 运算符吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-31 23:16:22 | 显示全部楼层   陕西省商洛市
4963384 发表于 2022-5-30 23:30
编辑框1.内容 = 选择 (单选框1.选中, “OK”, “YES”)  试试

我当然知道选择会返回确定的量,我想说的是用选择命令去执行命令会出错
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2022-5-30 23:30:47 | 显示全部楼层   广东省广州市
编辑框1.内容 = 选择 (单选框1.选中, “OK”, “YES”)  试试
回复 支持 反对

使用道具 举报

结帖率:98% (48/49)

签到天数: 10 天

发表于 2022-5-30 19:03:59 | 显示全部楼层   内蒙古自治区呼伦贝尔市
不算bug把?
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 6 天

发表于 2022-5-30 17:25:08 | 显示全部楼层   四川省巴中市
编辑框1.内容 = 选择 (单选框1.选中, “OK”, “YES”)  这样可以 他是返回项  返回项
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 6 天

发表于 2022-5-30 17:12:19 | 显示全部楼层   四川省巴中市
真 就是 OK  , 假 就是 YES  我自己这样判断的 应该没问题吧
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 8 天

发表于 2022-5-30 16:05:21 | 显示全部楼层   广东省深圳市
没下载源码,看见这些回复大概知道了是什么情况,个人觉得不算BUG吧,易语言的选择命令是一个子程序,如果参数也是需要计算的就会先把所有参数都执行完再运行选择命令,这和C++的三目运算符不一样,函数和运算符还是有差别的,当然易语言这个命令本身就容易引起这些误会
回复 支持 反对

使用道具 举报

结帖率:96% (22/23)

签到天数: 1 天

发表于 2022-5-30 15:49:59 | 显示全部楼层   广东省深圳市
很久以前易语言论坛就有过这个问题的反馈,仁者见仁智者见智,修改估计是不可能了
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
发表于 2022-5-30 15:48:44 | 显示全部楼层   北京市北京市
1.“选择”是一个命令,后面的项是参数,无论之前的条件是什么,参数都应该是被首先被计算出的,VB的iif也是这样。
2.“=”符号既可以表示赋值,也可以表示等于,表示“赋值”时无返回值。具体“=”表示什么含义取决于需不需要返回值
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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