首页
学习
活动
专区
工具
TVP
发布

易语言编程常见错误

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

常见错误:001

症状:封装了一个模块编译出来加载后没有命令

病因:未将定义好的方法名公开

治标:将所有方法名后面的公开表格单击

治本:定义好的方法在模块源码或程序源码内可以无需公开即刻调用,但编译出去的易语言模块文件不公开则一般情况下是无法调用的。

常见错误:002

症状:调用一个自己编译的xx.DLL时提示xx.DLL不存在

病因:未将自己编译的xx.DLL放置在主程序同路径

治标:将自己编译的xx.dll放到主程序相同文件夹里

治本:将DLL放到主程序同目录只针对与没有在定义DLL设置相对路径的文件,如果如要将DLL放置到指定的同根目录下的二级目录则需要在定义DLL方法的时候设置相对路径。

常见错误:003

症状:封装了一个类模块,调用定义的方法时易语言不显示

病因:未公开封装类模块的方法

治标:公开封装类模块的方法

治本:类模块中的方法不同于子程序方法,即使在同模块源码或同程序源码中,不公开则无法调用,但同类模块中的方法可以相同调用。公开的问题也与001中提到的有重合,如果编译出去的易语言模块中定义了一个类模块但没公开,易语言加载模块之后也是无法调用这个类模块任何命令的;

常见错误:004

病症:调用一个模块命令的时候提示参数类型错误但双击该模块查看命令参数显示又是正常的

病因:此类问题一般出现在两种情况下

1、引用多个模块,多个模块中有相同名称的命令但参数不一致(新手篇提到的)

2、引用了模块之后又在程序源码中定义了一个相同名称但参数不一致的命令

治标:调整模块的引用顺序,将实际用的模块调整到前面;删除模块或改名程序源码中定义的命令。

治本:写程序尽量少使用三方模块,如非特别需要只调用“精易模块”即可满足大部分需求,因为较多的三方模块是基于开源的“精易模块”二次编译的,而这些发布三方模块的作者偷懒不修改命令名称只修改参数就发布出来,用户调用多个基于“精易模块”二次编译的模块时便会出现004这样的错误;在程序源码中定义命令名称时须避免和某个模块的名称或支持库命令重复。

常见错误:005

症状:定义了变量名,但调试或编译是提示xx变量xx类型不能转换为xx类型

病因:自定义数据类型的变量直接给变量赋值

治标:赋值相同类型的变量类型即可

治本:易语言自定义数据类型的变量,不能直接赋值非同类型的变量值,一般是赋值给自定义数据变量的成员。取值相较赋值更需要注意,取出自定义数据变量的成员值时需要声明是取出哪个成员的值,直接取自定义数据变量的值是无实际用处的。

常见错误:006

症状:调试代码都没问题,编译出来就不能执行或实现预期的效果

病因:再某些关键代码行调用了“输出调试文本”或“调试输出”命令

治标:删除“输出调试文本”或“调试输出”命令,保留正常代码。

治本:“输出调试文本”与“调试输出”仅在易程序的调试版本中被执行,在发布版本中将被直接跳过,换句话就是编译出去的程序中,凡是调用了这两个命令的代码行不再执行其代码。调试程序输出参数或者结果的时候尽量以变量方式调试,避免直接调试输出关键代码行的结果。

常见错误:007

症状:提示不能将xx变量转换为xx数组型数据

病因:xx变量为数组类型的变量,但定义的时候没有设置数组数量

治标:如果不知道返回的数组有多少数组成员的时候,直接将数组型变量的数量设置为0

治本:不设置数组数量的变量可看着为一个单成员数据,只能返回一个数据,数组可以返回多个相同类型的数据;子程序一般只能通过参考方式返回数组型变量数据,支持库部分命令可以直接返回数组型变量数据,“加入成员”命令中“欲加入成员的数组变量”为数组型变量,“欲加入的成员数据”为单数据变量。

常见错误:008

症状:错误信息:数组成员引用下标超出定义范围

病因:取数组成员数据时超出了现有数组变量中的成员数量

治标:取数组成员数据前调用“取数组成员数”判断要取出的成员索引是否大于现有数组变量中的成员数量

治本:取出数组型变量的成员变量时注意数组的成员数量,再动态取成员值时尤为注意,务必在取值前调用“取数组成员数”判断当前的数组成员数,避免程序运行中途数组取成员值时因为索引超过数组总成员数报错而停止或结束运行。

常见错误:009

症状:定义了一个子程序,调用时返回数据不正常

病因:子程序返回数据逻辑错误

治标:去掉中间的含有“返回”命令的代码行

治本:子程序返回数据,一般在没有逻辑判断的情况下只需一个“返回”命令,但在有逻辑判断的子程序中,逻辑判断的真或者假的分支都需要有返回命令,出现多个逻辑判断的代码段以实际需要在必要分支中调用“返回”

常见错误:010

症状:没有传值但“是否为空”命令返回为假

病因:不熟悉“是否为空”真正的含义

治标:移除传入的变量

治本:易语言“是否为空”指的是这个参数是否有变量传入而不是是否有值传入,即使传入没有赋值的变量,“是否为空”也会返回假。只要传入了变量“是否为空”这个命令基本无用了,稳妥的方式是子程序中单独判断传入的参数值是否为空

,这样无聊是否传入了变量还是无值变量均可以判断传入的参数的状态。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190421A027ZS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券