精易论坛

标题: 通用型读写 [打印本页]

作者: 禁回忆    时间: 2021-1-13 16:52
标题: 通用型读写
本源码非原创,仅是对用户用户@350246356 的帖子【非原创】易语言通用型的写入和读取 纯源码+API实现中的源代码做了略微的修改,改成了类,另外对各种数据类型的兼容性做了测试。

这种读写通用型的写法不支持直接传入长整数型、双精度小数型、数组,但可封装到自定义数据类型、类中传入并读写。

封装成类的过程中踩了一些小坑。

正题

用习惯了Java的Object,回到易语言,倒是有个通用型,但是吴涛他不让用。
通过复制的办法倒是可以使用通用型,但是读写是个问题。
就像这样:


很早之前就在找一些解决方法,但是找到的。。。

精易论坛翻了个遍,看到的大多数都是一个名叫@jy5 的用户发的帖子,大家该骂他骂他,嘴上说纯源码,实则用的支持库。
滚吧。

剩下的能用的大多是像用户@350246356 的帖子易语言写通用型数据,取通用型的值这种的,大致看了一下,实用性不强,有种刻意要用通用型的感觉,写数据的时候还要指定数据类型,感觉这种做法是舍本逐末。
放弃。

之后又翻到了一大堆蒋勇的帖子(可把我恶心坏了,为什么不把这种东西直接封掉)

最终看到了同样是用户@350246356 的帖子【非原创】易语言通用型的写入和读取 纯源码+API实现

这种写法让我眼前一亮,可行。

看到了底下用户@秦王嬴政 的评论,


下载源码实际测试了一下,小数型是支持的,双精度小数型和长整数型不支持。
数组肯定是不支持的,但我实在想不出来会有什么情形要直接存一个数组,完全可以遍历数组存进去。

查看了一下源码,不支持双精度小数型和长整数型的原因大概率是因为其中【_读整数】【_写整数】两个子程序参数的数据类型和返回值的数据类型为整数型,造成了数据溢出或者其他原因。

但这些都不是最主要的,这种写法支持自定义数据类型和类,在自定义数据类型或类里声明的各种类型的变量可以完整的读写,包括前面说的不支持的双精度小数型和长整数型,以及数组。

通用型读写.e (16.96 KB, 下载次数: 183)
作者: 禁回忆    时间: 2021-1-13 16:54
本帖最后由 禁回忆 于 2021-1-13 16:56 编辑

额外说明,需要支持直接传入双精度小数型或长整数型的话,有能力的请自行修改【_写整数】【_读整数】子程序,因原代码中使用的为置入代码()执行的汇编指令,我无能为力。
作者: sinewtec    时间: 2021-1-13 17:52
现在都不折腾这个了 分别出来读写 基本上都满足 但是要整合到一个子程序里面 还是比较无奈呀 不过还是支持
作者: 杨明煜    时间: 2021-1-13 18:00
学习理解.............
作者: 7ian    时间: 2021-1-13 18:13
看了下用处不大,就是把数据地址拿出来存在另一个位置;读的时候类型要匹配才行,而且原变量释放了就取不到了。如:一个子程序写,另一个子程序负责读
作者: 梦寻简单    时间: 2021-1-13 18:16
不支持长整数什么的主要还是无法获取到类型长度
作者: dsjz    时间: 2021-1-13 19:55
感觉不太行,目测会有很多BUG
作者: 深圳梦    时间: 2021-1-13 21:14
共同努力,共同进步
作者: 孤城已故    时间: 2021-1-14 01:55

作者: kyo9766    时间: 2021-1-14 10:21
学习一下通用型的读写,感谢分享
作者: 外星星人    时间: 2021-1-14 11:14
        共同努力,共同进步
作者: hjdnwx    时间: 2021-1-22 10:28
666666666666666666
作者: yeweiyang    时间: 2021-1-27 19:51
全是bug,堆栈崩塌,可以加我一起讨论
作者: 梦想ol    时间: 2021-1-28 10:18
恕我直言,这操作相当于刻舟求剑
作者: 梦里的彩虹糖    时间: 2021-2-21 21:55
        支持开源~!感谢分享
作者: 禁回忆    时间: 2021-2-22 09:44
romantic 发表于 2021-1-28 10:18
恕我直言,这操作相当于刻舟求剑

对的,实际操作的话还是不用易语言的好,因为偷懒的问题,这是我在论坛找到的为数不多的还能实际使用的几个之一
作者: 禁回忆    时间: 2021-2-22 09:46
yeweiyang 发表于 2021-1-27 19:51
全是bug,堆栈崩塌,可以加我一起讨论

实际使用的话还是c\c++的好,易语言自身实现的话,这些问题也想不出来怎么用比较简单的方式避免,完全用操作内存倒是可以实现,但是太麻烦了,不值得
作者: xhxwy    时间: 2021-2-26 05:03
支持开源~!感谢分享
作者: 墨影0620    时间: 2021-4-3 20:58
试了下不行,是我操作不对呢?
作者: 一生几擦肩    时间: 2021-11-18 19:54
不支持双精度小数型和长整数型的原因大概率是因为其中【_读
作者: S777    时间: 2021-11-28 13:33

作者: ghost12    时间: 2022-5-13 08:00
新技能已get√
作者: 玄易    时间: 2022-9-19 15:07
支持开源~!感谢分享
作者: LiYJ    时间: 2022-9-27 22:26
支持支持
作者: xzc1215    时间: 2022-11-9 19:40
感谢分享学习一下
作者: lisijia    时间: 2023-3-14 20:17

感谢分享学习一下
作者: a46213599    时间: 2023-8-31 21:51
学习一下通用型的读写,虽然看不懂你们说什么,但要感谢分享。




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4