Funktionsreferenz


DllStructSetData

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];
;   }
;=========================================================
Local $str = "int var1;ubyte var2;uint var3;char var4[128]"
Local $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