基 础 函 数 参 考


DllStructSetData

设置结构中元素的数据.

DllStructSetData ( 结构, 元素, 值 [, 索引] )

参 数

结构 DllStructCreate 返回的数据结构.
元素 结构中基于 1 的元素, 或者由 DllStructCreate 函数定义的元素名.
设置元素的新值.
索引 [可选参数] 对于数组元素,需要指定基于 1 的索引.
如果省略或 Default(默认)关键字, 将设置索引基于 1 的尽可能多的值 (用于快速设置字符串).
不用于非数组元素.

返 回 值

成功: 返回从数据结构读取的值.
失败: 返回 0.
@Error: 0 = 无错误.
1 = DllStructCreate 函数返回的数据结构不正确.
2 = 元素值超出范围.
3 = 索引值在数据结构外面.
4 = 元素的数据类型未知
5 = 索引 <= 0.

备 注

当元素是 char[n], byte[n] 或 ubyte[n] 时, 数据可以是字符串, 否则必须是数字.

相 关 函 数

DllStructCreate, DllStructGetData, DllStructGetSize

函 数 示 例


;=========================================================
;   创建数据结构
;   struct {
;       int             var1;
;       unsigned char   var2;
;       unsigned int    var3;
;       char            var4[128];
;   }
;=========================================================
Local $str = "int;byte;uint;char[128]"
Local $a = DllStructCreate($str)
If @error Then
    MsgBox(0, "", "DllStructCreate 发生错误 " & @error);
    Exit
EndIf

;=========================================================
;   设置数据结构中的数据
;   struct.var1 = -1;
;   struct.var2 = 255;
;   struct.var3 = INT_MAX; -1 将自动确定类型(无符号 int)
;   strcpy(struct.var4,"Hello");
;   struct.var4[0]  = 'h';
;=========================================================
DllStructSetData($a, 1, -1)
DllStructSetData($a, 2, 255)
DllStructSetData($a, 3, -1)
DllStructSetData($a, 4, "Hello")
DllStructSetData($a, 4, Asc("h"), 1)

;=========================================================
;   显示数据结构的信息
;=========================================================
MsgBox(0, "DllStruct", "数据结构大小: " & DllStructGetSize($a) & @CRLF & _
        "数据结构指针: " & DllStructGetPtr($a) & @CRLF & _
        "数据:" & @CRLF & _
        DllStructGetData($a, 1) & @CRLF & _
        DllStructGetData($a, 2) & @CRLF & _
        DllStructGetData($a, 3) & @CRLF & _
        DllStructGetData($a, 4))

;=========================================================
;   释放为数据结构分配的内存
;=========================================================
$a = 0

provider with jb51.net (unicode)