开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 4313|回复: 10
收起左侧

[易源码分享] 变体型数据结构简单分析

[复制链接]

结帖率:100% (27/27)
发表于 2019-10-17 02:59:00 | 显示全部楼层 |阅读模式   福建省福州市
分享源码
界面截图: -
是否带模块: -
备注说明: -
今天玩到了变体型 就好奇他的结构,找遍全网资料还是挺少的,自己留个笔记吧!

  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
a文本型 
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
' 调试输出 (反汇编子程序 (&Test))
' Test ()
变体分析 ()
子程序名返回值类型公开备 注
变体分析  
变量名类 型静态数组备 注
_VAR变体型 
_Addr整数型 
_Addr_1整数型 
_VAR_TYPE整数型 
_VAR.赋值 (“abc啊123”, )
' _VAR.赋值 ({ “b”, “a” }, )
_Addr = 取数据_通用型 (_VAR)
_VAR_TYPE = 指针到整数 (_Addr + 0)
调试输出 (“数据类型: ”变体_取类型 (_VAR_TYPE))
调试输出 (“Addr + 0”, _VAR_TYPE)  ' 数据类型
调试输出 (“Addr + 2”, 指针到整数 (_Addr + 2))  ' 保留0
调试输出 (“Addr + 4”, 指针到整数 (_Addr + 4))  ' 保留0
_Addr_1 = 指针到整数 (_Addr + 8)  ' 数组为结构体指针,其他为数据指针。占位4字节
调试输出 (“Addr + 8”, _Addr_1)
如果真 (_VAR_TYPE = 8)  ' 8是文本型
' // 返回的是宽字节文本 每个字算2个字节
' 调试输出 (指针到文本 (_Addr_1)) '这样是不合理的 因为是宽字符 占位2字节 如果是不是双字节字符 以0填充 ,文本结束符也是0所以只能取1个字节
' 调试输出 (指针到文本W (_Addr_1)) '想用汇编实现 奈何不会写哈哈哈~~~
调试输出 (“文本W:”, 指针到字节集 (_Addr_1, 7 × 2 + 2))  ' 文本字数(宽字符) * 占位字节 + 结束符 0 0
调试输出 (“Addr + 12”, 指针到整数 (_Addr + 12))  ' 保留0
如果真 (_VAR_TYPE > 8192)
调试输出 (“------------------------------ 变体数组结构 尺寸为24字节 ------------------------”)
调试输出 (“Addr_1 + 0”, 指针到整数 (_Addr_1 + 0))  ' 维数 也好像是内存大小吧 搞不懂
调试输出 (“Addr_1 + 4”, 指针到整数 (_Addr_1 + 4))  ' 数据占位长度 如整数型占位4字节 就是4
调试输出 (“Addr_1 + 8”, 指针到整数 (_Addr_1 + 8))  ' 保留0
调试输出 (“Addr_1 + 12”, 指针到整数 (_Addr_1 + 12))  ' 数组指针
' // 数组数据如果为文本也是宽字符 解释和
调试输出 (“Addr_1 + 12 - 成员1”, 指针到字节集 (指针到整数 (指针到整数 (_Addr_1 + 12) + 0), 2 + 2))  ' 数组第一个数据指针
调试输出 (“Addr_1 + 12 - 成员2”, 指针到字节集 (指针到整数 (指针到整数 (_Addr_1 + 12) + 4), 2 + 2))  ' 数组第二个数据指针
调试输出 (“Addr_1 + 16”, 指针到整数 (_Addr_1 + 16))  ' 数组成员数
调试输出 (“Addr_1 + 20”, 指针到整数 (_Addr_1 + 20))  ' 保留1

子程序名返回值类型公开备 注
变体_取类型文本型 部分特殊类型可能不准
参数名类 型参考可空数组备 注
Code整数型
变量名类 型静态数组备 注
_Code整数型 
_Msg文本型 
如果 (Code ≥ 8192)
_Msg = “ - 数组”
_Code = Code % 8192
_Code = Code

判断 (_Code = 0)
_Msg = “Empty” + _Msg
判断 (_Code = 1)
_Msg = “Null” + _Msg
判断 (_Code = 2)
_Msg = “整数型” + _Msg
判断 (_Code = 3)
_Msg = “长整数型” + _Msg
判断 (_Code = 4)
_Msg = “小数型” + _Msg
判断 (_Code = 5)
_Msg = “双精度小数型” + _Msg
判断 (_Code = 6)
_Msg = “货币型” + _Msg
判断 (_Code = 7)
_Msg = “时间日期型” + _Msg
判断 (_Code = 8)
_Msg = “文本型” + _Msg
判断 (_Code = 9)
_Msg = “对象” + _Msg
判断 (_Code = 10)
_Msg = “错误” + _Msg
判断 (_Code = 11)
_Msg = “逻辑型” + _Msg
判断 (_Code = 12)
_Msg = “变体型” + _Msg
判断 (_Code = 13)
_Msg = “对象” + _Msg
判断 (_Code = 17)
_Msg = “字节型” + _Msg
_Msg = “未知”
返回 (_Msg)
子程序名返回值类型公开备 注
取数据_通用型整数型 取到的是变量在堆中的地址,和 取变量数据地址() 一样,注意: 字节集数据需要+8,前8位是标准,字节集型数据建议使用 取指针_字节集型()
参数名类 型参考可空数组备 注
变量通用型基本支持所有类型
置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 })
返回 (0)


i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2019-11-1 23:28):
宽字节文本可以用 Unicode宽文本 转 Ansi文本 解码  如 U2A({79,0,0,0})

评分

参与人数 3好评 +2 精币 +8 收起 理由
camingo + 1 + 2 YYDS~!
被封禁言 + 1 新技能已get√
易语言资源网 + 1 + 5 支持开源~!感谢分享

查看全部评分


结帖率:100% (4/4)

签到天数: 26 天

发表于 2024-1-27 09:35:42 | 显示全部楼层   山东省淄博市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)

签到天数: 28 天

发表于 2023-8-7 01:32:03 | 显示全部楼层   广西壮族自治区柳州市
QQ截图20230807011849.png
QQ截图20230807012138.png


回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 27 天

发表于 2023-4-7 11:17:34 | 显示全部楼层   河南省濮阳市
支持你,下载看看
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 27 天

发表于 2023-4-7 11:17:17 | 显示全部楼层   河南省濮阳市
下载看看,好东西,
回复 支持 反对

使用道具 举报

发表于 2022-4-2 23:10:59 | 显示全部楼层   江苏省南京市
变体型能和json转换吗
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2021-7-12 11:44:24 | 显示全部楼层   江西省宜春市
这个真的感谢!!!
回复 支持 反对

使用道具 举报

结帖率:94% (31/33)
发表于 2020-9-19 19:19:31 | 显示全部楼层   福建省福州市
变体型哪里有视频教程详细介绍的  一头雾水
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)

签到天数: 25 天

发表于 2019-10-18 16:10:12 | 显示全部楼层   湖北省咸宁市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 21 天

发表于 2019-10-17 11:50:25 | 显示全部楼层   河北省石家庄市
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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