Function Reference

DllStructSetData

構造体内の要素にデータを設定します。

DllStructSetData ( Struct, Element, value [, index ] )

 

パラメータ

Struct DllStructCreateが返す構造体
Element 構造体のアクセスしたい要素。1 始まり、または要素名がDllStructCreateで定義されている必要があります。
value 構造体に新たに設定したい値
index [オプション] 要素が配列の場合、1始まりのインデックスを指定します。省略したりDefaultキーワードを使用した場合はインデックス1からできる限り値を設定します(すばやく文字列を設定する場合便利です)。非配列要素には使用できません。

 

返し値

成功 構造体から読み取られ、返される値。
失敗 0
@Error: 0 = エラーなし。
1 = 構造体がDllStructCreateによって返された正常な構造体ではない。
2 = Elementの値が範囲外。
3 = indexが構造体の範囲外。
4 = Elementのデータ型が不明。
5 = index <= 0.

 

注意

要素がchar[n]、byte[n]、ubyte[n]の場合、データに文字列が使用できます。それ以外の場合は数値を使用します。

 

関連

DllStructCreate, DllStructGetData, DllStructGetSize

 


;=========================================================
;   構造体作成
;   struct {
;       int             var1;
;       unsigned char   var2;
;       unsigned int    var3;
;       char            var4[128];
;   }
;=========================================================
$str        = "int;ubyte;uint;char[128]"
$a          = DllStructCreate($str)
if @error Then
    MsgBox(0,"","Error in DllStructCreate " & @error);
    exit
endif

;=========================================================
;   構造体にデータを設定
;   struct.var1 = -1;
;   struct.var2 = 255;
;   struct.var3 = INT_MAX; -1 は(unsigned 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","Struct Size: " & DllStructGetSize($a) & @CRLF & _
        "Struct pointer: " & DllStructGetPtr($a) & @CRLF & _
        "Data:" & @CRLF & _
        DllStructGetData($a,1) & @CRLF & _
        DllStructGetData($a,2) & @CRLF & _
        DllStructGetData($a,3) & @CRLF & _
        DllStructGetData($a,4))

;=========================================================
;   構造体に割り当てられたメモリを解放
;=========================================================
$a = 0