社区应用 社区服务 会员列表 统计排行 帮助 银行
  • 257阅读
  • 10回复

[交流][易语言BUG]第一次调用GetLastError返回错误的值

楼层直达
发帖
257
铜币
3859
威望
0
E积分
51
技术积分
0
这是易语言的BUG,我在论坛上也看到有类似的帖子,但至今易语言还没修复这个BUG


.版本 2


.局部变量 互斥体句柄, 整数型
.局部变量 错误代码, 整数型


' 把下面这句代码屏蔽掉就会出问题
GetLastError ()  ' 如果不先初始化这个函数,易语言就会去调用GetProcAddress这就导致调用这个后还会自动调用SetLastError
互斥体句柄 = CreateMutexA (0, 真, “”)
错误代码 = GetLastError ()
输出调试文本 (取十六进制文本 (错误代码))


这个BUG是因为易语言是边运行边加载模块和函数,并把函数地址保存下来。
下次再调用的时候就不需要重新获取函数地址,只有第二次调用才能获取正确的返回值。


另外 用黑月编译就不存在此BUG


发帖
686
铜币
164
威望
0
E积分
0
技术积分
0
只看该作者 沙发  发表于: 06-13
才发现啊,易语言调用DLL命令是很煞笔的,
每调用一个dll命令,就执行一次loadlib,然后getaddress,
效率什么的,优化代码什么的,不存在的.
少年,你还没从奇淫技巧的编程中脱离出来吗?
级别: 总版主
发帖
1105
铜币
6599
威望
0
E积分
5
技术积分
25

只看该作者 板凳  发表于: 06-13
新版易语言有个命令:取最后错误() ,替代:GetLastError()
发帖
257
铜币
3859
威望
0
E积分
51
技术积分
0
只看该作者 地板  发表于: 06-13
回 2楼(洫蜘蛛) 的帖子
但是黑月不支持这个命令
发帖
876
铜币
3133
威望
0
E积分
12
技术积分
1
只看该作者 4楼 发表于: 06-13
     问题不大
发帖
257
铜币
3859
威望
0
E积分
51
技术积分
0
只看该作者 5楼 发表于: 06-13
回 4楼(mmmww3) 的帖子
这你就不懂了,创建互斥体时不管之前是否已创建,它都会返回句柄。
要用GetLastError()来检查之前是否已创建。
发帖
1365
铜币
23148
威望
0
E积分
0
技术积分
0
只看该作者 6楼 发表于: 06-14
学习了!!
发帖
83
铜币
0
威望
0
E积分
0
技术积分
0
只看该作者 7楼 发表于: 06-14
            
发帖
202
铜币
3
威望
0
E积分
0
技术积分
0
只看该作者 8楼 发表于: 06-14
这函数么用过,干什么的
级别: 托儿所
发帖
5
铜币
0
威望
0
E积分
0
技术积分
0
只看该作者 9楼 发表于: 06-14
这是什么 不知道
快速回复

限60 字节
批量上传需要先选择文件,再选择上传
 
认证码:
上一个 下一个