Funktionreferenz


DllStructGetData

Beschreibung anzeigen in

Gibt die Daten eines Elements der Struktur zurück.

DllStructGetData ( Struct, Element [, index = Default] )

Parameter

Struct Die Struktur zurückgegeben aus DllStructCreate().
Element Das Element auf das man zugreifen möchte, beginnend bei 1 oder dem Elementnamen wie in DllStructCreate() festgelegt.
index [optional] Für Elemente, die durch [] definiert sind, gibt dies den 1-basierten Index an, der abgerufen werden soll. Wird er weggelassen oder Default keyword, werden alle Elemente für char[n], wchar[n] und byte[n] abgerufen (nützlich für den schnellen Abruf).
Nicht für Nicht-[]-Elemente verwenden.

Rückgabewert

Erfolg: Daten in dem Element der Struktur.
Fehler: 0.
@Error: 1 = Struct ist keine gültige Struktur wie von DllStructCreate() zurückgegeben.
2 = Element nicht im zulässigen Bereich oder unbekannt.
3 = Index nicht im zulässigen Bereich
4 = Element Datentyp unbekannt
5 = Index <= 0.

Bemerkungen

Wenn das Element char or char[n], wchar oder wchar[n] ist und der Index ausgelassen wird, ist der zurückgegebene Datentyp ein String().
Wenn das Element byte[n] ist und der Index ausgelassen wird, ist der zurückgegebene Datentyp binär,
andernfalls ist der zurückgegebene Datentyp der für AutoIt passendste eines individuellen Elements (z. b. byte gibt Int32 zurück, float gibt Double zurück).

Verwandte Funktionen

DllStructCreate, DllStructSetData

Beispiel

#include <MsgBoxConstants.au3>

;=========================================================
;   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($MB_SYSTEMMODAL, "", "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($MB_SYSTEMMODAL, "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