870| 59
|
[大家谈谈] 自定义数据类型排序 存不存在这种操作??? |
发表于 2024-7-7 09:30:46
|
显示全部楼层
| |
发表于 2024-7-7 15:12:42
|
显示全部楼层
点评
看第13楼 自动计算偏移量的问题搞定了 不用手动计算要排序的数据偏移多少 新的问题又来了 传址和传值不能两全
现在,你只需要填上你的数组变量,计算下要排序第几个位置就行了,一个子程序就够了,不用像别的那些,每个自定义结构又重写一遍
别想那些了,能通用型支持所有自定义结构 给你填第几个位置已经很不错了,还自动识别类型,单单通用型用易语言你都找不到一个完美的识别类型
还差最后一个问题了 可以不用人填 就自动判断出 每一个成员占的空间大小 就可以捣鼓出一个更智能的
第二个参数 直接传入 第一个数组对应的成员 比如 数组[1].B 位置就不用自己填了吧?类型应该也是可以判断出来的
排序成员位置这里 还能再琢磨琢磨 比如 传入 通用型 数组[1].C 是不是就可以达到自动判断位置和类型呢
计算你要排序的位置,前面每出现 长整数型/时间日期/双精度 都算2个位置,其它类型都算4
第一段置入代码看的懂 把地址写到[EBP-4]成员数写到[EBP-8] 排序啥的都不是问题现在就是不知道咋自动判断类型比如偏移8的地方可以是小数也可以是整数
全部按整数的精度进行排序?
看懂汇编的话,我里面用的是到整数的计算方法,所以小数型 双精度 长整数都没扩展,原理就是这样
还是看不懂 填了位置之后 怎么判断是整数还是双精度 整数读入4字 双精度读入8字...
哇哦 已经有人捣鼓出来了...
| ||
发表于 2024-7-7 16:11:02
|
显示全部楼层
点评
目前还差最后一个问题了 怎么样判断出 某个自定义类型 占的总大小 吃烤土豆去 回头继续琢磨
| ||
| ||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表于 2024-7-7 18:49:38
|
显示全部楼层
点评
第二个参数 已经找到优化方向了 看第13楼 可以直接填要排序的数据成员名 自动算出偏移量
| |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表于 2024-7-7 23:24:27
|
显示全部楼层
| ||
发表于 2024-7-7 20:33:02
|
显示全部楼层
点评
只要思想不滑坡 QwQ 困难总比办法多
| ||
发表于 2024-7-7 19:14:09
|
显示全部楼层
点评
不搞了,顶多再搞 文本型,然后字节集型长度,然后8字节集 这3种类型的子程序
再捣鼓捣鼓 看看能不能 既能判断成员偏移 又能判断成员类型
整数 小数 一次读入4字 双精度一次读入8字 MOV MOVSS MOVSD 不判断类型就做不到通用 绝大部分排序场景都是 整 小 双 小部分是时间和文本
不支持 长整数/双精度/日期时间类型的变量;如果长整数型,只判断低4字节,如果高4字节一样或者没超过32位的也可以判断
考虑类型做什么,只要排序的不是那3个类型都没问题啊
解决一个旧问题 又产生了一个新问题 就是怎么样自动判断这个成员是什么类型 不勾参考可以判断类型 勾了参考可以判断偏移 如何两全其美
| ||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发表于 2024-7-7 16:37:31
|
显示全部楼层
| ||
sitemap|
易语言源码|
易语言教程|
易语言论坛|
易语言模块|
手机版|
广告投放|
精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司
( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173