找回密码
 加入
搜索
查看: 33|回复: 3

[AU3基础] 关于结构体的浅显问题。有人愿意帮忙回答下吗?

[复制链接]
发表于 昨天 14:33 | 显示全部楼层 |阅读模式
本帖最后由 life999 于 2025-8-20 14:34 编辑

Local $str = "int var1;byte var2;uint var3;char var4[128]"
Local $a = DllStructCreate($str)
If @error Then
    MsgBox(4096,"","DllStructCreate 发生错误" & @error);
    Exit
EndIf

DllStructSetData($a, "var1", -1)
DllStructSetData($a, "var2", 255)
DllStructSetData($a, "var3", -1)
DllStructSetData($a, "var4", "Hello")
DllStructSetData($a, "var4", Asc("h"), 1)

MsgBox(4096,"DllStruct","数据结构大小: " & DllStructGetSize($a) & @CRLF & _
        "数据结构指针: " & DllStructGetPtr($a) & @CRLF & _
        "Data:" & @CRLF & _
        DllStructGetData($a, 1) & @CRLF & _
        DllStructGetData($a, 2) & @CRLF & _
        DllStructGetData($a, 3) & @CRLF & _
        DllStructGetData($a, 4) & @CRLF & _
        DllStructGetData($a, 4,1))

$a = 0

帮助文件里面说DllStructGetData第三个参数是索引,默认返回索引1
为什么DllStructGetData($a, 4)输出的是一个字符串"hello"
DllStructGetData($a, 4,1))输出的是一个字符 h


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 昨天 15:09 | 显示全部楼层
你的“元素”是数组么?


发表于 昨天 15:53 | 显示全部楼层
DllStructGetData($a, 4)   返回数据结构的第4个元素的全部数据

DllStructGetData($a, 4,1))  返回数据结构的第4个元素的第1个字符 h
注: Au3的结构体继承自C语言,C字符串可以都看作数组,
你完全可以把结构体看作复杂多嵌套的数组, 但其索引较特殊, 以1为开头
 楼主| 发表于 昨天 16:54 | 显示全部楼层
user3000 发表于 2025-8-20 15:53
DllStructGetData($a, 4)   返回数据结构的第4个元素的全部数据

DllStructGetData($a, 4,1))  返回数据结 ...

感谢回答。。要学习DllStructGetData,需要先学习什么?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-8-21 02:22 , Processed in 0.080549 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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