开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 357240|回复: 837
打印 上一主题 下一主题
收起左侧

[分享] 易语言编程常见错误 - [新手篇]

    [复制链接]
回帖奖励 864 枚 精币 回复本帖可获得 2 枚 精币奖励! 每人限 1 次(中奖概率 90 %)
跳转到指定楼层
发表于 2019-3-6 16:44:59 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   广东省揭阳市
本帖最后由 项目部002 于 2019-3-6 17:25 编辑

本篇文章将一些常见的错误复现与解决方案写出来供新手参考,旨在帮助新手更好的了解易语言,在用易语言编程的时候少踩坑。


常见错误:001
症状:调试运行之后点击“按钮1”不会弹出信息框

病因:“将参数变量声明到组件事件里”
治标:将“参数一”与“参数二”删除
治本:组件事件的参数变量除了支持库自带的参数回调变量外,不允许用户额外声明组件事件子程序里的参数变量,牢记则治本


常见错误:002
症状:声明了变量“A”与变量类型“整数型”也用“=”号赋值了但报错不是声明的变量类型“整数型”

病因:一行代码中连续出现两个“=”号则从第一个“=”号后的代码为一个整体判断
治标:将第二个“=”号改为“+”号
治本:A=A 自身等于自身无实际意义也会报错“错误(10092): 不能将变量自身赋值给自身。” A=A=1  这里第一个A看作是一个变量,第二个A=1 看作是一个判断,这里是表达的意思是 A是否等于1 是否在程序的表达是真假,也就是如果A=1,则这个判断的结果就是真,第一个A也就等于真,第一个A等于真了,真假的类型是逻辑型,这和开始声明的A是整数型不符,调试的时候易语言就检查到这个错误就报错了。牢记一行代码中出现的“=”号数量与第一个变量实际表达的意义是什么


常见错误:003
病症:声明了自定义数据类型仍提示“错误(36): 找不到指定的对象成员命令名称“xx”。”

病因:模块或者支持库已定义了的自定义数据类型被用户重复在源码里重新定义,易语言自动将用户自己重新定义的自定义数据类型为首选加载。
治标:删除自己重新声明的同名自定义数据类型,直接声明引用模块或者支持库已定义的自定义数据类型
治本:自定义数据类型\DLL命令\子程序\类模块\资源文件\常量数据\全程局变量  这些需要声明或定义的数据易语言会在调试或者在编译的时候优先加载用户自己声明或定义的数据,没有找到匹配的才会去支持库或模块中寻找匹配的数据。牢记已声明或定义的过的数据无需重复声明或定义,直接引用即可


常见错误:004
病症:已加载模块名,按模块里的命令参数提示传递的对应变量类型的参数但提示报错
病因:加载两个拥有同名的模块,但命令参数不相同。
治标:挨个删除已加载的模块,直到命令通过调试或者编译,将冲突的模块移除模块引用表。
治本:易语言调试或编译的时候,对于从模块中引用名的顺序是按模块引用表的前后顺序引用的,如果你引用的命令在引用的第二个,但第一个模块也有同名的命令,则优先加载第一个模块的命令,如果第一个模块命令参数不同于第二个模块的命令,易语言就会报错。牢记引用的模块的时候尽量避免出现有同名但不同参数多个模块同时引用
      
常见错误:005
病症:已赋值变量传递到命令里,最后调试输出的时候并不是一开始赋值的数据


病因:如果支持库或模块命中里有参考返回的参数变量,一旦命令内部对可参考返回的参数赋值,则会覆盖一开始赋值的数据
治标:只声明变量,不对变量赋值,由命令内部自动赋值。
治本:参考返回是为了让命令支持多个数据返回,理论上现有易语言的调用的命令返回值均只有一个,如果想返回多个则需要通过参考返回的形式将数据返回(注意:在易语言里数组、用户定义数据类型、库定义数据类型、文本型、字节集型数据是默认参考返回),在DLL命令中,参考返回为“传址”。牢记参考返回的变量无需在调用命令前赋值,注意参考返回的数据类型,避免声明的变量类型错误。


常见错误:006          
病症:已声明变量且已赋值,但提示数据类型转换错误

病因:只声明了变量名未声明变量的数据类型
治标:根据你赋值的数据的实际类型将声明的变量名定义对应的类型
治本:易语言默认的数据类型(数值型[字节型、短整数型、整数型、长整数型、小数型、双精度小数型]、文本型、字节集、日期时间型、逻辑型),此外还有库定义的数据类型,用户自定义数据类型。而声明变量时类型不填写,易语言默认为整数型。牢记声明变量的时候除了填写变量名称也要记得填写对应的数据类型,如果声明的就是整数型则可以直接留空(不建议这么做哦),留空为整数型同样适用DLL命令与自定义数据类型的成员变量。


常见错误:007
病症:正确声明了类模块,也正确传递了参数值,调用命令返回结果也是正确的,但最后效果是错误的

病因:类模块命令在引用的时候会自动运行类里面默认的“_初始化”子程序,在当前变量域结束的时候自动调用类里面的“_销毁”。除了调用一次便直接生效的类模块命令外,动态的调用的例如图中的“类_托盘”,在类自动调用“_销毁”之后,里面的类命令将全部失效
治标:将动态调用类型的类模块声明到程序集变量或全局变量即可。
治本:单独的子程序中,局部变量只会在该子程序被调用的时候有效,如果该子程序运行完毕,则子程序中的所有局部变量将失效。这里有前提条件,子程序中的局部变量没有设置为静态变量,因为按易语言的规则(如果局部变量在定义时此属性被设置为假,那么运行应用程序时,此变量在其所在子程序开始被执行前自动分配存储空间并初始化,在所在子程序执行完毕后自动释放所分配的存储空间。也就是说,变量的存储空间仅在其所在子程序执行过程中存在;如果此属性被设置为真,那么此变量与全局、程序集变量一样,被分配给在程序运行期间永久存在的存储空间并仅在应用程序启动运行前被初始化一次。)设置为静态变量后局部变量将和全部、程序集变量一样。注意这里类模块命令即时设置为静态局部变量但其他子程序仍不能直接调用该类模块的其他命令。牢记局部变量的特性与类模块命令的特性。           


常见错误:008
病症:未勾选支持库但打开源码仍然能正常调用该支持库提供的命令,把源码发给也没勾选支持库的易友,易友打开源码提示xx支持库不存在,无法正常运行源码
病因:未勾选支持库,本地易语言支持库文件夹里也没有这个支持库,只要打开的源码里调用了该支持库的命令易语言就会报xx支持库不存在。
治标:下载提示中对应版本的支持库文件放到易语言根目录(\e\lib)文件夹中,重新打开源码即可。
治本:发源码给易友或开源源码的时候如果用到了不常见或非官方支持库的支持库,尽量将该支持库的文件与源码打包发送或开源。因为易语言IDE加载支持库的方式是先将根目录(\e\lib)里的所有支持库文件(.fne)加载到内存里,再根据用户最后一次配置的支持库信息显示是否勾选,如果你没勾选但支持库配置表里有这个支持库,打开调用了这个支持库命令的源码也不会报错。牢记如果源码里用到了不常见或非官方的支持库的命令,尽量将该支持库(.fne)文件与源码打包,


常见错误:009
病症:将支持库文件(.fne)与源码打包给了易友,但对方只能调试与编译,不能静态编译。
病因:未将(.fne)动态库对应的静态支持文件一起打包。
治标:将(.fne)动态库对应的静态支持文件一起打包,将动态库(.fne)放到易语言根目录(\e\lib)文件夹中,静态支持文件(.lib与.res)放到易语言根目录(\e\static_lib)文件夹中,重新打开源码即可。
治本:支持静态编译的支持库除了有(.fne)的动态库还有(.lib)与(.res)静态支持文件。牢记包含支持静态编译支持库的源码需要将动态(.fne)与静态(.lib与.res)一起打包再发送或开源,不然在打开源码静态编译的时候就会报错


常见错误:010
病症:打开源码调试或编译的时候提示“错误(37): 找不到指定的命令/子程序/Dll命令调用名称xxx”

病因:调用了当前调试或编译环境里没有的命令
治标:勾选对应的支持库或引用对应的的模块。
治本:调试或编译的时候提示“错误(37)”,
      将提示的命令名在“http://esdn.125.la/”里搜索一下,看这个命令是否出自某个支持库,
      如果不是再到“http://ec.125.la/sub.htm”搜索一下,看这个命令是否出自“精易模块”,
      如果不是再到“https://bbs.125.la/”搜索一下是否出自论坛相关的开源贴,
      如果不是再到“http://www.eyuyan.la/search.html”搜索一下是否能在易语言资源网已搜集的资源中找到,
      如果都不是的话就需要百度一下查找一下这个命令的出处。      






未完待添加(本文中有不对或需要补充的地方,希望大家不要吝啬,指出不对或需要补充的部分,谢谢大家)




小节:善用F1,在易语言IDE代码编辑区哪里不懂,鼠标点到那里再按F1,看提示信息,根据提示信息纠正错误。


让易更易,这里洞洞俩带个头,将反馈的一些问题汇总并整理成不同的文章,旨在帮助新手更好的学习易语言。
众人拾柴火焰高,一个人的力量是有限的,这里希望各位前辈共同整理常见错误与解决方案发表出来帮助新人,为易语言“新鲜血液”的补充贡献出自己的一份力量。

点评

目测没有多少新手来看,而是直接问答区   广西壮族自治区崇左市  发表于 2019-3-6 18:05

评分

参与人数 7好评 +6 精币 +7 荣誉 +1 收起 理由
循环判断首 + 1 泰裤辣
阿布° + 1 这么有耐心 这么有爱的项目组 还有第二家?
小程呈 + 1 新技能已get√
李侠客 + 1 + 2 新技能已get√
冯古屋 + 1 + 1 新技能已get√
Terrell + 1 新技能已get√
Godsteal + 1 + 3 + 1 感谢分享,很给力!~

查看全部评分

结帖率:100% (9/9)

签到天数: 28 天

836
发表于 昨天 23:53 | 只看该作者   河北省石家庄市

回帖奖励 +2 枚 精币

感谢分享啊
回复 支持 反对

使用道具 举报

结帖率:50% (7/14)

签到天数: 28 天

835
发表于 3 天前 | 只看该作者   安徽省淮北市

回帖奖励 +2 枚 精币

感谢分享啊
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 27 天

834
发表于 6 天前 | 只看该作者   贵州省毕节市

回帖奖励 +2 枚 精币

功德无量
回复 支持 反对

使用道具 举报

签到天数: 10 天

833
发表于 2024-3-5 18:53:44 | 只看该作者   河南省周口市
前排混脸熟,先点赞
回复 支持 反对

使用道具 举报

签到天数: 10 天

832
发表于 2024-3-5 18:53:27 | 只看该作者   河南省周口市

回帖奖励 +2 枚 精币

前排混脸熟,先点赞66
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 29 天

831
发表于 2024-2-28 18:43:28 | 只看该作者   湖南省长沙市

回帖奖励 +2 枚 精币

之前就是直接百du了解
回复 支持 反对

使用道具 举报

结帖率:100% (12/12)
830
发表于 2024-2-17 08:49:58 | 只看该作者   福建省漳州市

回帖奖励 +2 枚 精币

对新手的我来说很好
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 14 天

829
发表于 2024-2-7 17:28:47 | 只看该作者   河南省新乡市
谢谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 14 天

828
发表于 2024-2-7 17:26:38 | 只看该作者   河南省新乡市

回帖奖励 +2 枚 精币

学到了!
回复 支持 反对

使用道具 举报

结帖率:28% (5/18)

签到天数: 11 天

827
发表于 2024-2-3 13:28:58 | 只看该作者   河北省廊坊市
呃呃呃呃呃呃呃呃呃呃呃
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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