为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

易语言变体型数据结构简单分析

三叶资源网 2019-10-31 10:35:31 易语言例程 2244 ℃ 8 评论
.版本 2
.支持库 spec

.子程序 _临时子程序
.局部变量 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)

@350246356

文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有8位网友发表了看法:

  • 易语言

    易语言  评论于 [2020-04-03 13:31:28]  回复

    易语言变体型

  • 易语言

    易语言  评论于 [2020-05-08 23:03:29]  回复

    易语言变体型是什么

  • yiyuyan

    yiyuyan  评论于 [2021-05-13 23:29:00]  回复

    易语言数据分析

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
获取本机信息文件内容穿透搜索替换工具文件批量下载二维码识别多线程例程RAPIDXML百度推广引流软件U盘锁屏Android面试宝典6.0高级记事本伊对APP模块快速启动失败代码工资管理系统小说阅读器APP加密COMHOOK类模块源码魔鬼作坊快速排序DLL劫持源码
最新评论