Setzt Daten in einem Element der Struktur.
DllStructSetData ( Struct, Element, value [, index ] )
Parameter
| Struct | Struktur, zurückgegeben von DllStructCreate. |
| Element | Das Element in der Struktur, auf das man zugreifen möchte (beginnend bei 1) oder der Elementname, wie er mit DllStructCreate festgelegt wurde. |
| value | Der neue Wert, der in die Struktur geschrieben werden soll. |
| index | [optional] Befinden sich die Elemente in einem Array, so legt dies den 1-basierenden Index des zu erneuernenden Arrays fest. Falls dies nicht angegeben wird oder das Schlüsselwort Default verwendet wird, so wird bei Index 1 angefangen (nützlich für String die schnell erneuert werden sollten). Nicht für nicht-Array Elemente. |
Rückgabewert
| Erfolg: | Der gesetzte Wert, der aus der Struktur zurückgelesen wird. |
| Fehler: | 0. |
| @Error: | 0 = Kein Fehler. |
| 1 = Struct ist keine korrekte, von DllStructCreate zurückgegebene Struktur. | |
| 2 = Element-Wert nicht im zulässigen Bereich. | |
| 3 = Index würde außerhalb der Struktur sein. | |
| 4 = Element Datentyp unbekannt. | |
| 5 = Index <= 0. |
Bemerkungen
Wenn das Element ein char[n], byte[n] oder ubyte[n] ist, kann der Datentyp ein Zeichenstring sein, andernfalls muss es eine Zahl sein.
Verwandte Funktionen
DllStructCreate, DllStructGetData, DllStructGetSize
Beispiel
;=========================================================
; Erzeugen der Struktur
; struct {
; int var1;
; unsigned char var2;
; unsigned int var3;
; char var4[128];
; }
;=========================================================
$str = "int var1;ubyte var2;uint var3;char var4[128]"
$a = DllStructCreate($str)
if @error Then
MsgBox(0,"","Fehler in DllStructCreate " & @error);
exit
endif
;=========================================================
; Daten in Struktur setzen
; struct.var1 = -1;
; struct.var2 = 255;
; struct.var3 = INT_MAX; -1 wird per typecast zu (unsigned int)
; strcpy(struct.var4,"Hallo");
; struct.var4[0] = 'h';
;=========================================================
DllStructSetData($a,"var1",-1)
DllStructSetData($a,"var2",255)
DllStructSetData($a,"var3",-1)
DllStructSetData($a,"var4","Hallo")
DllStructSetData($a,"var4",Asc("h"),1)
;=========================================================
; Struktur-Info anzeigen
;=========================================================
MsgBox(0,"DllStruct","Strukturgröße: " & DllStructGetSize($a) & @CRLF & _
"Strukturzeiger: " & DllStructGetPtr($a) & @CRLF & _
"Daten:" & @CRLF & _
DllStructGetData($a,1) & @CRLF & _
DllStructGetData($a,2) & @CRLF & _
DllStructGetData($a,3) & @CRLF & _
DllStructGetData($a,4))
;=========================================================
; Den Speicher freigeben den die Struktur belegt hat
;=========================================================
$a=0