开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

楼主: 王大家族
收起左侧

[已解决] 精易模块关于句柄bug

[复制链接]
发表于 2017-5-26 07:39:24 | 显示全部楼层   福建省福州市
看看有什么好宝贝
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
发表于 2017-5-25 21:27:59 | 显示全部楼层   香港特别行政区*
窗口句柄用4字节表示没问题。
你最好说下啥情况下另外代码改啥的。
还有64位和32位之间的共享也是用的4字节,只取低32位的。
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 21 天

发表于 2017-5-25 21:11:35 | 显示全部楼层   广东省阳江市
王大家族 发表于 2017-5-25 20:55
句柄应该是长整数的,这种情况下句柄永远是大于0的。我说的负数指的是整数型的负数。如果是整数型的,他 ...

整数的正数范围是21亿。所以超过后,才会溢出导致的负数。
但是,一般来说,句柄的值都是几万到几十万的,连上亿都差十万八千里,怎么会超过?
而且,按你这理论级别,那易语言自身的那个数据类型都是不对的,长整数也是有符号的!
你可以看看其他的编程语言,或者易语言模块,看那个存储句柄不是用的整形而是长整型的。

可以很明确的告诉你,返回负数,不是因为因为这个句柄有效而整数放不下导致的。
但是具体是什么,我也不知道,因为,我没有看到你的代码,但是你相信超过21亿的句柄么?
你相信,是返回了一个超过了值是21亿的有效句柄,然后因为整数放不下,变成了负数显示么?

评分

参与人数 1精币 +5 收起 理由
项目部002 + 5 讨论很激烈。

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:54% (37/68)
 楼主| 发表于 2017-5-25 20:59:00 | 显示全部楼层   福建省漳州市
御风软件 发表于 2017-5-25 20:55
我说的只是原理,但是代码怎么用,具体情况,具体分析。
就像有的时候,我们写代码,真的时候执行,也可 ...

再说那个问题 我已经解决一年了,之后就不再有问题了。我只是看模块还是没有改,才反应的。改不改由他们。
回复 支持 反对

使用道具 举报

结帖率:54% (37/68)
 楼主| 发表于 2017-5-25 20:57:22 | 显示全部楼层   福建省漳州市
御风软件 发表于 2017-5-25 20:55
我说的只是原理,但是代码怎么用,具体情况,具体分析。
就像有的时候,我们写代码,真的时候执行,也可 ...

不再争辩。
回复 支持 反对

使用道具 举报

结帖率:54% (37/68)
 楼主| 发表于 2017-5-25 20:55:56 | 显示全部楼层   福建省漳州市
御风软件 发表于 2017-5-25 20:39
在转换的时候,高精度向低精度转换时,如果值超过,会溢出,才会导致出现负数

但是,整形的正数范围是 ...

句柄应该是长整数的,这种情况下句柄永远是大于0的。我说的负数指的是整数型的负数。如果是整数型的,他是不可能真的是负数,而是因为数值超过整数型正整数范围,又因整数型是有符号的,所以变成负数。并不是真的是负数。考虑这种情况,写代码的时候,就应该是不等于0.
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 21 天

发表于 2017-5-25 20:55:43 | 显示全部楼层   广东省阳江市
王大家族 发表于 2017-5-25 20:42
我明明看到,负数的句柄也是有效的。自从把条件改为不等0,就不再出现问题。

我说的只是原理,但是代码怎么用,具体情况,具体分析。
就像有的时候,我们写代码,真的时候执行,也可能假的时候执行
所以,我还是那句话,我不是说模块没有BUG,也不确定是你电脑问题。
最好,还是贴出原来的代码,和你修改后的代码,才方便定位是什么导致的
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 21 天

发表于 2017-5-25 20:51:44 | 显示全部楼层   广东省阳江市
王大家族 发表于 2017-5-25 20:42
我明明看到,负数的句柄也是有效的。自从把条件改为不等0,就不再出现问题。

WIN 下的句柄,默认情况下都是递增的,由系统管理。有可能会重用
你可以用编程助手,你看一下窗口,组件的句柄,一般的值,都是几万到几十万之间。

百度百科,自己看下句柄的定义:http://baike.baidu.com/item/%E5%8F%A5%E6%9F%84
句柄有2种,一种是指针,一种是对象标识,但是,都不可以是负数。

从上面的2个定义中我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的。它就像我们的车牌号一样,每一辆注册过的车都会有一个确定的号码,不同的车号码各不相同,但是也可能会在不同的时期出现两辆号码相同的车,只不过它们不会同时处于使用之中罢了。从数据类型上来看它只是一个32位(或64位)的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

你修改了代码不出问题,那可能是真的原来的模块有BUG。
你修改了没有出问题,那么,你应该把修改后的代码,给贴出来

回复 支持 反对

使用道具 举报

结帖率:54% (37/68)
 楼主| 发表于 2017-5-25 20:42:28 | 显示全部楼层   福建省漳州市
御风软件 发表于 2017-5-25 20:36
无知可以,但是,无知到也认为别人和你一样,就是愚蠢了。

请问,我说的那点有错?还让我百度,笑死我 ...

我明明看到,负数的句柄也是有效的。自从把条件改为不等0,就不再出现问题。
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 21 天

发表于 2017-5-25 20:39:57 | 显示全部楼层   广东省阳江市
王大家族 发表于 2017-5-25 19:39
你去百度下有符号整数。了解之后再来说这些。

在转换的时候,高精度向低精度转换时,如果值超过,会溢出,才会导致出现负数

但是,整形的正数范围是21亿左右,也就是你传入一个超过21亿的数,才会出现负数

就算你是长整数,只要你不存储超过21亿的这样大的数字,赋值给整数就不会有溢出
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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