关于结构体的浅显问题。有人愿意帮忙回答下吗?
本帖最后由 life999 于 2025-8-20 14:34 编辑Local $str = "int var1;byte var2;uint var3;char var4"
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
你的“元素”是数组么?
DllStructGetData($a, 4) 返回数据结构的第4个元素的全部数据
DllStructGetData($a, 4,1))返回数据结构的第4个元素的第1个字符 h
注: Au3的结构体继承自C语言,C字符串可以都看作数组,
你完全可以把结构体看作复杂多嵌套的数组, 但其索引较特殊, 以1为开头 user3000 发表于 2025-8-20 15:53
DllStructGetData($a, 4) 返回数据结构的第4个元素的全部数据
DllStructGetData($a, 4,1))返回数据结 ...
感谢回答。。要学习DllStructGetData,需要先学习什么? 要把问题先简单化,理解什么是结构体
把结构体看作复杂多嵌套的数组, 但其索引较特殊, 以1为开头
读写操作: 读 = GetData ; 写 = SetData
你想再深入应当要多花点时间,了解C语言的变量类型,结构体其实就是将多种C变量类型融合存储到起来,
你读写时得注意数据类型的存储长度,它跟数组一样存在越界风险
页:
[1]