Gibt die Daten eines Elements der Struktur zurück.
DllStructGetData ( Struct, Element [, index = Default] )
| 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. |
| 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. |
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).
DllStructCreate, DllStructSetData
#include <MsgBoxConstants.au3>
Example()
Func Example()
#cs Comments:
Erstellen Sie die folgende Struktur (C-Sprache)::
struct {
int var1;
unsigned char var2;
unsigned int var3;
char var4[128];
};
Schema:
------------------------------------
\ int \ byte \ uint \ char \
\ var1 \ var2 \ var3 \ var4 \
------------------------------------
#ce Comments:
; Weist einer lokalen konstanten Variablen die Definition einer Struktur zu (man sollte die Bemerkungen zu DllStructCreate sorgfältig durchlesen).
Local Const $tagSTRUCT1 = "struct;int var1;byte var2;uint var3;char var4[128];endstruct"
; Hinweis: Die Tag-Variable wird als Konstante deklariert, da sich ihr Wert bei keiner Skriptausführung ändern wird.
; Weist der Struktur eine lokale Variable zu.
Local $tSTRUCT1 = DllStructCreate($tagSTRUCT1)
; Wenn ein Fehler aufgetreten ist, den Fehlercode anzeigen und False zurückgeben.
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "Error in DllStructCreate, Code: " & @error)
Return False
EndIf
; Setzt die Daten des Elements var1 (int) in $tSTRUCT1.
DllStructSetData($tSTRUCT1, "var1", -1) ; Oder 1 statt „var1“.
; Setz die Daten des Elements var2 (Byte) in $tSTRUCT1.
DllStructSetData($tSTRUCT1, 2, 255) ; Oder „var2“ anstelle von 2.
; Setzt die Daten des Elements var3 (uint) in $tSTRUCT1.
DllStructSetData($tSTRUCT1, "var3", -1) ; Der Wert -1 (signed int) wird in unsigned int umgewandelt.
; Oder 3 statt „var3“.
; Setzt die Daten des Elements var4 (Zeichen) in $tSTRUCT1.
DllStructSetData($tSTRUCT1, "var4", "Hallo") ; Oder 4 statt „var4“.
; Hinweis: Dieses Element kann bis zu 128 Zeichen enthalten.
; Ändert die Daten des Elements var4 (Zeichen) in $tSTRUCT1 am Index 1 des Zeichen-Arrays (Index beginnt bei 1).
DllStructSetData($tSTRUCT1, "var4", Asc("h"), 1)
; Zeigt die Ergebnisse an.
MsgBox($MB_SYSTEMMODAL, "", "Struct Size: " & DllStructGetSize($tSTRUCT1) & @CRLF & _
"Struct pointer: " & DllStructGetPtr($tSTRUCT1) & @CRLF & _
"Data:" & @CRLF & _
DllStructGetData($tSTRUCT1, 1) & @CRLF & _ ; Oder „var1“ anstelle von 1.
DllStructGetData($tSTRUCT1, "var2") & @CRLF & _ ; Oder 2 statt „var2“.
DllStructGetData($tSTRUCT1, 3) & @CRLF & _ ; Oder „var3“ anstelle von 3.
DllStructGetData($tSTRUCT1, 4)) ; Oder „var4“ anstelle von 4.
; Gibt die von der Struktur verwendeten Ressourcen frei.
$tSTRUCT1 = 0
EndFunc ;==>Example