开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 6890|回复: 9
收起左侧

[已解决] 高分悬赏:如何将自定义数据类型作为DLL参数

 关闭 [复制链接]

结帖率:100% (1/1)
发表于 2014-6-20 14:50:27 | 显示全部楼层 |阅读模式   辽宁省大连市
99精币
现在需要:
将一个自定义的数据类型:包括整数,文本,字节集
  
数据类型名公开备 注
新的数据类型 
成员名类 型传址数组备 注
a整数型  
b整数型  
文本文本型  
字节集字节集  
c整数型  




作为DLL的参数传入一个自己写的DLL文件当中。
但是易语言DLL文件本身不支持自定义数据类型作为参数。
错误(10063): 被取地址的子程序“子程序1”的参数 1 必须是基本数据类型,且不能为字节集。

问,该如何将参数传递进入DLL?
要求:为了方便以后的管理和扩展,禁止将数据类型拆开,将每个成员都当做参数传递。
如下:
  
子程序名返回值类型公开备 注
子程序1 禁止这样
参数名类 型参考可空数组备 注
a整数型禁止这样
b整数型禁止这样
文本文本型禁止这样
字节集字节集禁止这样
c整数型禁止这样



最佳答案

查看完整内容

修改一下 [e=4].版本 2 .子程序 TEST, , 公开 .参数 指针, 整数型 .局部变量 数据, 数据类型1 复制到类型 (数据, 指针, 取类型字节数 (数据)) 信息框 (到文本 (数据.整数型), 0, ) 信息框 (数据.文本型, 0, ) 信息框 (到文本 (取指针数据_字节集 (数据.字节集)), 0, ) 信息框 (到文本 (数据.小数型), 0, ) 信息框 (到文本 (数据.长整数), 0, ) 信息框 (到文本 (数据.双精度小数型), 0, ) ' 不在需要使用了 释放字节集的内存 释 ...

求助知识:请将问题描述清楚,最好把你有问题的源码打包上传上来,这样更方便大家帮助你。
友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 3点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。

结帖率:100% (2/2)

签到天数: 1 天

发表于 2014-6-20 14:50:28 | 显示全部楼层   湖南省湘西土家族苗族自治州
修改一下

  
子程序名返回值类型公开备 注
TEST 
参数名类 型参考可空数组备 注
指针整数型
变量名类 型静态数组备 注
数据数据类型1 
复制到类型 (数据, 指针, 取类型字节数 (数据))
信息框 (到文本 (数据.整数型), 0, )
信息框 (数据.文本型, 0, )
信息框 (到文本 (取指针数据_字节集 (数据.字节集)), 0, )
信息框 (到文本 (数据.小数型), 0, )
信息框 (到文本 (数据.长整数), 0, )
信息框 (到文本 (数据.双精度小数型), 0, )
' 不在需要使用了 释放字节集的内存
释放指针内存 (数据.字节集)
清空内存块 (数据, 取类型字节数 (数据))
子程序名返回值类型公开备 注
释放指针内存  
参数名类 型参考可空数组备 注
指针整数型
如果真 (IsBadReadPtr (指针, 4) = 0)
GlobalFree (指针)

子程序名返回值类型公开备 注
取指针数据_字节集字节集 
参数名类 型参考可空数组备 注
指针整数型
变量名类 型静态数组备 注
Bin字节集 
size整数型 
检查 (指针 > 0)
如果真 (IsBadReadPtr (指针, 4) = 0)
size = 取字节集数据 (指针到字节集 (指针, 4), 3, )
Bin = 指针到字节集 (指针 + 4, size)
返回 (Bin)

评分

参与人数 2好评 +1 精币 +5 荣誉 +3 收起 理由
半夏时光 + 1 + 5 原来你在这呢
笨潴 + 3 热心帮助他人,荣誉+3,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:95% (21/22)

签到天数: 15 天

发表于 2014-6-20 14:55:17 | 显示全部楼层   广东省珠海市
大神的问题只有@じMarcusジ
回复

使用道具 举报

结帖率:85% (62/73)

签到天数: 6 天

发表于 2014-6-20 15:03:02 | 显示全部楼层   广东省珠海市
我也没办法,这个我试了,我也遇到这个问题,不好意思,帮不到你~

点评

大神 你别走= =   广东省珠海市  发表于 2014-6-20 15:10
回复

使用道具 举报

结帖率:100% (2/2)
发表于 2014-6-20 15:16:17 | 显示全部楼层   浙江省杭州市
http://www.5a5x.com/06/201107/07173817.html
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 1 天

发表于 2014-6-20 17:42:54 | 显示全部楼层   湖南省湘西土家族苗族自治州
传递指针 拷贝内存

点评

做一个例程,悬赏全给你   辽宁省大连市  发表于 2014-6-20 22:46
回复

使用道具 举报

发表于 2014-6-20 22:25:51 | 显示全部楼层   广东省珠海市
111帮不到你
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 1 天

发表于 2014-6-21 11:28:42 | 显示全部楼层   湖南省湘西土家族苗族自治州
  
窗口程序集名保 留  保 留备 注
集_测试   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
自定义数据类型1 
自定义.整数型 = 1
自定义.文本型 = “asff”
自定义.字节集 = 取变量指针_字节集 (到字节集 (“测试字节集”))
' 字节集在自定义数据类型中 直接拷贝不知道为什么不行..因此就用这个方法代替
' 需要注意的是 字节集 在DLL 中 被 取指针数据_字节集取出之后 就会把内存释放掉,因此 如果需要多次使用
' 还需要自己在做一些处理.比如专门有一个函数来释放.当不在需要的时候 在调用释放
自定义.小数型 = 1.1
自定义.长整数 = 1231241
自定义.双精度小数型 = 123.22365
TEST (自定义)
' 重新赋值字节集
自定义.字节集 = 取变量指针_字节集 (到字节集 (“测试字节集2”))
TEST_指针 (取变量指针_数据类型 (自定义))
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
取变量指针_数据类型整数型 变量指针
参数名类 型参考可空数组备 注
变量数据类型1
置入代码 ({ 139, 69, 8, 139, 0, 139, 229, 93, 194, 4, 0 })
返回 (0)
子程序名返回值类型公开备 注
取指针数据_字节集字节集 
参数名类 型参考可空数组备 注
指针整数型
变量名类 型静态数组备 注
Bin字节集 
size整数型 
检查 (指针 > 0)
如果真 (IsBadReadPtr (指针, 4) = 0)
size = 取字节集数据 (指针到字节集 (指针, 4), 3, )
Bin = 指针到字节集 (指针 + 4, size)
GlobalFree (指针)
返回 (Bin)
子程序名返回值类型公开备 注
取变量指针_字节集整数型 变量指针
参数名类 型参考可空数组备 注
变量字节集
变量名类 型静态数组备 注
buffer整数型 
size整数型 
size = 取字节集长度 (变量)
buffer = GlobalAlloc ( #GMEM_ZEROINIT, size + 4)
检查 (buffer > 0)
写到内存 (size, buffer, 4)
写到内存 (变量, buffer + 4, size)
返回 (buffer)

Desktop.zip

4.38 KB, 下载次数: 264

回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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