递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 7456|回复: 10
打印 上一主题 下一主题

[视窗] 易语言中自定义数据类型在火山视窗中怎么实现?

[复制链接]

22

主题

171

帖子

1412

积分

金牌会员

Rank: 6Rank: 6

积分
1412
跳转到指定楼层
楼主
发表于 2022-9-21 16:59:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 曼菲士 于 2022-9-21 17:03 编辑

我想把易语言中一个DLL弄到火山视窗中,现在卡在结构数据上,取到的数据会偏移,让我百思不得其解,不知道是写法问题还是哪里除了问题?

程序运行后,通过查看变量地址,用CE打开相应区域确实看到了一致的数据,但是在取第一个数据AdapterInfo.Next时,却是从第13个位置开始,前面的12个是不是火山视窗的类特有的预留?
或者我是不是弄错了写法?





取IP和默认网关.zip (33.14 KB, 下载次数: 9)


回复

使用道具 举报

22

主题

171

帖子

1412

积分

金牌会员

Rank: 6Rank: 6

积分
1412
11#
 楼主| 发表于 2022-9-21 22:06:58 | 只看该作者
Xelloss0618 发表于 2022-9-21 21:56
把你的例子改一下


太厉害了,非常感谢!
赶紧学一下,里面的东西很多。
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
10#
发表于 2022-9-21 21:56:49 | 只看该作者
曼菲士 发表于 2022-9-21 20:57
请问有例子吗?或者相关帖链接

把你的例子改一下

取IP和默认网关.zip (41.14 KB, 下载次数: 25)

评分

参与人数 1金钱 +5 收起 理由
曼菲士 + 5 赞一个!

查看全部评分

回复

使用道具 举报

22

主题

171

帖子

1412

积分

金牌会员

Rank: 6Rank: 6

积分
1412
9#
 楼主| 发表于 2022-9-21 20:57:29 | 只看该作者
Xelloss0618 发表于 2022-9-21 20:47
不要这么写吧,火山类的内存对齐可能跟结构体不一样,容易出错
用结构类自带的用法吧,定义真结构体 @dt::S ...

请问有例子吗?或者相关帖链接
回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
8#
发表于 2022-9-21 20:56:53 | 只看该作者
对的,当前结构体有待优化。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
7#
发表于 2022-9-21 20:47:22 | 只看该作者
不要这么写吧,火山类的内存对齐可能跟结构体不一样,容易出错
用结构类自带的用法吧,定义真结构体 @dt<结构类>::S,和用 GetStruct、SetStruct 两个方法赋值。
回复

使用道具 举报

22

主题

171

帖子

1412

积分

金牌会员

Rank: 6Rank: 6

积分
1412
6#
 楼主| 发表于 2022-9-21 20:05:59 | 只看该作者
本帖最后由 曼菲士 于 2022-9-21 20:13 编辑

谢谢分享,这问题不好搜索,找了好久都没点头绪

刚发现,用结构的第一个变量地址也可以。
方法一:内存移动 (取变量地址 (AdapterInfo) + 12, pAda, nSize)

方法二:内存移动 (取变量地址 (AdapterInfo.Next), pAda, nSize)
个人觉得用结构体的第一个变量地址比较靠谱,不用去找前面有多少个字节需要跳过。

回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
5#
发表于 2022-9-21 17:59:49 | 只看该作者
本帖最后由 server 于 2022-9-21 18:02 编辑
小蜗牛 发表于 2022-9-21 17:44
基类的变量,我一般是  取变量地址(自定义数据类型.首个变量)

正解,我以前发帖说过这个事。
http://bbs.voldp.com/forum.php?mod=viewthread&tid=13667
http://bbs.voldp.com/forum.php?mod=viewthread&tid=14757


专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

87

主题

952

帖子

4897

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4897
地板
发表于 2022-9-21 17:44:53 | 只看该作者
基类的变量,我一般是  取变量地址(自定义数据类型.首个变量)
回复

使用道具 举报

22

主题

171

帖子

1412

积分

金牌会员

Rank: 6Rank: 6

积分
1412
板凳
 楼主| 发表于 2022-9-21 17:29:45 | 只看该作者
通过类定义的自定义数据类型来看,从内存中观察到前12个字节和尾部68个字节并非我们定义的变量区域,那是属于火山视窗的区域,所以在复制内存中结构数据时,前12个字节跳过就能正确复制进去了,总算找到原因了。

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 21:10 , Processed in 0.105211 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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