平时用易语言写一些小工具时,可能会用到DLL传递数组,易语言又只支持返回常规类型,这时候我们可以使用该方法来取回原来的数据结构数组。
方法/步骤
-
1
首先新建一个空的DLL,然后新建一个数据类型如:
.版本 2
.数据类型 数据类型1
.成员 a, 逻辑型
.成员 b, 小数型
.成员 c, 双精度小数型
.成员 d, 长整数型
.成员 e, 整数型
.成员 f, 字节集
-
2
在新建一个公开的子程序
.版本 2
.支持库 spec
.子程序 info, 整数型, 公开
.局部变量 x, 数据类型1, , "0"
.局部变量 a, 数据类型1
清除数组 (x)
a.a = 真
a.b = 3.1
a.c = 3.1415926
a.d = 81357707
a.f = { 1, 2, 3 }
加入成员 (x, a)
加入成员 (x, a)
返回 (取变量地址 (x))
-
3
把新建的写好的DLL编译出来
END
方法/步骤2
-
1
然后在新建一个新的易程序,插入一个新的DLL命令.版本 2
.DLL命令 DLL命令1, 整数型, "info.dll", "info"
-
2
并把刚才DLL里面的自定义数据复制过来
.版本 2
.数据类型 数据类型1
.成员 a, 逻辑型
.成员 b, 小数型
.成员 c, 双精度小数型
.成员 d, 长整数型
.成员 e, 整数型
.成员 f, 字节集
-
3
然后新建一个子程序,代码如下:
.版本 2
.支持库 spec
.子程序 还原数组, , , 还原自定义数据 数组
.局部变量 变量地址
.局部变量 还原为字节集, 字节集
.局部变量 字节集长度, 字节集
.局部变量 还原数据长度
.局部变量 x, 数据类型1, 静态, "0"
.局部变量 i, 整数型
变量地址 = DLL命令1 ()
还原为字节集 = 指针到字节集 (变量地址, 4)
字节集长度 = 指针到字节集 (取变量地址 (还原为字节集 [1]) - 4, 4)
还原数据长度 = 取字节集数据 (字节集长度, 3, 1)
写到内存 (还原为字节集, 取变量地址 (x), 还原数据长度)
.计次循环首 (取数组成员数 (x), i)
调试输出 (x [i].a, x [i].b, x [i].c, x [i].d, x [i].e, x [i].f)
.计次循环尾 ()
调试输出 (取数组成员数 (x))
END
文章评论