recv返回的数据过大 易语言_【分享】易语言编程常见错误 [入门篇]

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:001

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:002

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:003

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:004

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:005

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:006

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

e9fcd85a9999e611ecbea9cbef187248.png

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:007

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:008

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:009

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

8ff7a52b4f4aeb4d077d17b317651121.png常见错误:010

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

本支持库在Win9x/ME/NT/2000/XP环境下实现了对WinSock2的函数拦截(包括如下函数:socket/closesocket/bind/listen/connect/accept/send/sendto/recv/recvfrom)。系统中任何程序使用WinSock2的函数都会被本支持库所拦截,并使用易语言事件触发的方式处理,您可以在被触发的事件中按照相应事件的规则自由的处理其他程序的WinSock调用。如果您对WinSock或Windows网络编程不是很了解,建议您在使用本支持库前阅读WinSock等其他相关文档或教程。注意:在使用本支持库前,您必须先正确安装网络服务提供者(ESPINN.dll(NN为当前版本))文件。网络服务提供者(ESPINN.dll(NN为当前版本))文件必须是随本支持库一起附带的网络服务提供者(ESPINN.dll(NN为当前版本)),否则安装将失败。当前本支持库对应的网络服务提供者版本是1.1。安装方法:使用"网络服务安装"中的"安装"命令(注意该命令的参数一定要填写正确)。卸载方法:首先您必须确定系统中和本支持库类似的拦截/过滤软件已正确卸载或没有卸载,否则请千万不要使用卸载方法!使用"网络服务安装"中的"卸载"命令,如果本方法没有执行成功,请千万不要删除已成功安装到系统路径下的网络服务提供者(ESPINN.dll(NN为当前版本))文件,原因请见下列警告。 [ 警告 ]如果网络服务提供者(ESPINN.dll(NN为当前版本))已经安装成功,并且"卸载"命令没有成功执行,(注意:只有"卸载"命令返回"真"才代表真正成功卸载了),或根本没有使用"卸载"命令,系统路径下的网络服务提供者(ESPINN.dll(NN为当前版本))文件不可以改名、删除或移动路径,否则很有可能导致整个系统的WinSock瘫痪。如果上述情况真的发生了也不要紧,您可以将随本支持库附带的网络服务提供者(ESPINN.dll(NN为当前版本))文件再次复制到系统路径中(推荐使用此方法,因为后面的方法在某些特定情况下可能不保险),或者直接执行"卸载"命令,并确定该命令是执行成功了。 操作系统支持: Windows
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值