構造体のサイズをbyte単位で返します。
DllStructGetSize ( Struct )
パラメータ
Struct | DllStructCreateが返す構造体 |
返し値
成功 | byte単位での構造体のサイズ |
失敗 | 0 |
@Error: | 0 = エラーなし。 |
1 = 構造体がDllStructCreateによって返された正常な構造体ではない。 |
注意
構造体内のデータが構造体のサイズを保持する必要がある場合使用されます。
関連
DllStructCreate, DllStructSetData
例
;=========================================================
; 構造体作成
; 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