开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 359237|回复: 864
收起左侧

[分享] 易语言编程常见错误 - [入门篇]

    [复制链接]
回帖奖励 820 枚 精币 回复本帖可获得 2 枚 精币奖励! 每人限 1 次(中奖概率 90 %)
发表于 2019-4-20 10:59:33 | 显示全部楼层 |阅读模式   广东省揭阳市


入门篇.png



常见错误:001
症状:封装了一个模块编译出来加载后没有命令
001.jpg
病因:未将定义好的方法名公开
治标:将所有方法名后面的公开表格单击
治本:定义好的方法在模块源码或程序源码内可以无需公开即刻调用,但编译出去的易语言模块文件不公开则一般情况下是无法调用的。




常见错误:002
症状:调用一个自己编译的xx.DLL时提示xx.DLL不存在
002.jpg
病因:未将自己编译的xx.DLL放置在主程序同路径
治标:将自己编译的xx.dll放到主程序相同文件夹里
治本:将DLL放到主程序同目录只针对与没有在定义DLL设置相对路径的文件,如果如要将DLL放置到指定的同根目录下的二级目录则需要在定义DLL方法的时候设置相对路径。




常见错误:003
症状:封装了一个类模块,调用定义的方法时易语言不显示
003.jpg
病因:未公开封装类模块的方法
治标:公开封装类模块的方法
治本:类模块中的方法不同于子程序方法,即使在同模块源码或同程序源码中,不公开则无法调用,但同类模块中的方法可以相同调用。公开的问题也与001中提到的有重合,如果编译出去的易语言模块中定义了一个类模块但没公开,易语言加载模块之后也是无法调用这个类模块任何命令的;




常见错误:004
病症:调用一个模块命令的时候提示参数类型错误但双击该模块查看命令参数显示又是正常的
004.jpg
病因:此类问题一般出现在两种情况下
1、引用多个模块,多个模块中有相同名称的命令但参数不一致(新手篇提到的)
2、引用了模块之后又在程序源码中定义了一个相同名称但参数不一致的命令
治标:调整模块的引用顺序,将实际用的模块调整到前面;删除模块或改名程序源码中定义的命令。
治本:写程序尽量少使用三方模块,如非特别需要只调用“精易模块”即可满足大部分需求,因为较多的三方模块是基于开源的“精易模块”二次编译的,而这些发布三方模块的作者偷懒不修改命令名称只修改参数就发布出来,用户调用多个基于“精易模块”二次编译的模块时便会出现004这样的错误;在程序源码中定义命令名称时须避免和某个模块的名称或支持库命令重复。




常见错误:005
症状:定义了变量名,但调试或编译是提示xx变量xx类型不能转换为xx类型
005.jpg
病因:自定义数据类型的变量直接给变量赋值
治标:赋值相同类型的变量类型即可
治本:易语言自定义数据类型的变量,不能直接赋值非同类型的变量值,一般是赋值给自定义数据变量的成员。取值相较赋值更需要注意,取出自定义数据变量的成员值时需要声明是取出哪个成员的值,直接取自定义数据变量的值是无实际用处的。


常见错误:006
症状:调试代码都没问题,编译出来就不能执行或实现预期的效果
006.gif
病因:再某些关键代码行调用了“输出调试文本”或“调试输出”命令
治标:删除“输出调试文本”或“调试输出”命令,保留正常代码。
治本:“输出调试文本”与“调试输出”仅在易程序的调试版本中被执行,在发布版本中将被直接跳过,换句话就是编译出去的程序中,凡是调用了这两个命令的代码行不再执行其代码。调试程序输出参数或者结果的时候尽量以变量方式调试,避免直接调试输出关键代码行的结果。




常见错误:007
症状:提示不能将xx变量转换为xx数组型数据
007.jpg
病因:xx变量为数组类型的变量,但定义的时候没有设置数组数量
治标:如果不知道返回的数组有多少数组成员的时候,直接将数组型变量的数量设置为0
治本:不设置数组数量的变量可看着为一个单成员数据,只能返回一个数据,数组可以返回多个相同类型的数据;子程序一般只能通过参考方式返回数组型变量数据,支持库部分命令可以直接返回数组型变量数据,“加入成员”命令中“欲加入成员的数组变量”为数组型变量,“欲加入的成员数据”为单数据变量。




常见错误:008
症状:错误信息:数组成员引用下标超出定义范围
008.jpg
病因:取数组成员数据时超出了现有数组变量中的成员数量
治标:取数组成员数据前调用“取数组成员数”判断要取出的成员索引是否大于现有数组变量中的成员数量
治本:取出数组型变量的成员变量时注意数组的成员数量,再动态取成员值时尤为注意,务必在取值前调用“取数组成员数”判断当前的数组成员数,避免程序运行中途数组取成员值时因为索引超过数组总成员数报错而停止或结束运行。


常见错误:009
症状:定义了一个子程序,调用时返回数据不正常
009.jpg
病因:子程序返回数据逻辑错误
治标:去掉中间的含有“返回”命令的代码行
治本:子程序返回数据,一般在没有逻辑判断的情况下只需一个“返回”命令,但在有逻辑判断的子程序中,逻辑判断的真或者假的分支都需要有返回命令,出现多个逻辑判断的代码段以实际需要在必要分支中调用“返回”


常见错误:010
症状:没有传值但“是否为空”命令返回为假
010.jpg
病因:不熟悉“是否为空”真正的含义
治标:移除传入的变量
治本:易语言“是否为空”指的是这个参数是否有变量传入而不是是否有值传入,即使传入没有赋值的变量,“是否为空”也会返回假。只要传入了变量“是否为空”这个命令基本无用了,稳妥的方式是子程序中单独判断传入的参数值是否为空
,这样无聊是否传入了变量还是无值变量均可以判断传入的参数的状态。




未完待添加(本文中有不对或需要补充的地方,希望大家不要吝啬,指出不对或需要补充的部分,谢谢大家)
小节:善用F1,在易语言IDE代码编辑区哪里不懂,鼠标点到那里再按F1,看提示信息,根据提示信息纠正错误。




  常见错误系列更新到第二篇,每篇10个较常见的错误。
  整理两篇“病例”中的“病症”大多都是细节上的问题,注意细节以及善用F1将不再为这类问题烦恼。
  日思夜想也搞不定或者暂时没有好的思路,可以上论坛寻求易友的帮助。


  ------>“150000+解决方案”<------
  在已解决的15W问答中,总有一个能解决你的问题或者给你提供思路的案例。


  ------>“有问必答”<------   
  看见没,就是这个,不懂的点一下,描述一下,再点一下发布,OK,人工在线解答有木有?



众人拾柴火焰高,一个人的力量是有限的,这里希望各位前辈共同整理常见错误与解决方案发表出来帮助新人,为易语言“新鲜血液”的补充贡献出自己的一份力量,让易更易!

评分

参与人数 1精币 +1 收起 理由
冯古屋 + 1 最后的广告不错!

查看全部评分

结帖率:50% (1/2)

签到天数: 15 天

发表于 前天 14:54 | 显示全部楼层   上海市上海市
支持支持支持支持支持支持支持
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 5 天前 | 显示全部楼层   河北省唐山市

谢谢楼主的精币,感激不尽
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)

签到天数: 18 天

发表于 6 天前 | 显示全部楼层   广东省佛山市

回帖奖励 +2 枚 精币

感谢分享啊
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 9 天

发表于 7 天前 | 显示全部楼层   广西壮族自治区桂林市

回帖奖励 +2 枚 精币

  谢谢楼主的精币,感激不尽
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2024-5-5 00:26:04 | 显示全部楼层   福建省福州市

回帖奖励 +2 枚 精币

刚开始接触还什么都不会,过来学习下。
回复 支持 反对

使用道具 举报

签到天数: 12 天

发表于 2024-5-4 11:09:13 | 显示全部楼层   广东省东莞市
学习学习
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 8 天

发表于 2024-5-2 10:30:11 | 显示全部楼层   湖北省武汉市

感谢分享啊
回复 支持 反对

使用道具 举报

结帖率:50% (3/6)

签到天数: 16 天

发表于 2024-5-1 18:20:07 | 显示全部楼层   广东省佛山市

回帖奖励 +2 枚 精币

66666666666666
回复 支持 反对

使用道具 举报

结帖率:96% (23/24)

签到天数: 14 天

发表于 2024-4-27 22:20:17 | 显示全部楼层   福建省福州市

回帖奖励 +2 枚 精币

路过
回复 支持 反对

使用道具 举报

结帖率:83% (5/6)

签到天数: 14 天

发表于 2024-4-24 10:45:21 | 显示全部楼层   辽宁省沈阳市

回帖奖励 +2 枚 精币

感谢分享啊
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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