Obtient la valeur d'un élément de la structure.
DllStructGetData ( Struct, Element [, index = Default] )
Struct | La structure retournée par DllStructCreate(). |
Element | L'élément de la structure auquel vous souhaitez accéder, à partir de 1, ou du nom de l'élément tel que défini dans DllStructCreate(). |
index | [optionnel] Pour les éléments qui sont dans un tableau ce paramètre spécifie l'index de base 1 à récupérer. S'il est omis ou si le mot-clé Default est utilisé, alors le tableau entier est récupéré (utile pour récupérer rapidement des chaînes). Ne pas utiliser pour des éléments qui ne sont pas dans un tableau. |
Succès: | Retourne les données dans l'élément de la structure. |
Échec: | Retourne 0. |
@error: |
1 = La structure n'est pas une structure correcte retournée par DllStructCreate(). 2 = Valeur de l'élément en dehors des limites ou inconnu. 3 = L'index est hors des limites. 4 = Type d'élément de donnée inconnu 5 = index <= 0. |
DllStructCreate, DllStructSetData
#include <MsgBoxConstants.au3> Example() Func Example() #cs Commentaires: Crée la structure suivante (langage C): struct { int var1; unsigned char var2; unsigned int var3; char var4[128]; }; Schéma: ------------------------------------ \ int \ byte \ uint \ char \ \ var1 \ var2 \ var3 \ var4 \ ------------------------------------ #ce ; Assigne une constante locale avec la définition d'une structure (lire attentivement les remarques DllStructCreate). Local Const $tagSTRUCT1 = "struct;int var1;byte var2;uint var3;char var4[128];endstruct" ; Note: La variable $tag est déclarée comme Const parce que sa valeur ne changera pas pendant toute l'exécution du script. ; Assigne une variable locale avec la structure. Local $tSTRUCT1 = DllStructCreate($tagSTRUCT1) ; Si une erreur s'est produite, affiche le code d'erreur et retourne False. If @error Then MsgBox($MB_SYSTEMMODAL, "", "Erreur dans DllStructCreate, Code: " & @error) Return False EndIf ; Définit les données de l'élément var1 (int) dans $tSTRUCT1. DllStructSetData($tSTRUCT1, "var1", -1) ; Ou 1 à la place de "var1". ; Définit les données de l'élément var2 (octet) dans $tSTRUCT1. DllStructSetData($tSTRUCT1, 2, 255) ; Ou "var2" au lieu de 2. ; Définit les données de l'élément var3 (uint) dans $tSTRUCT1. DllStructSetData($tSTRUCT1, "var3", -1) ; Le -1 (Int signé) sera converti en un int non signé. ; Ou 3 au lieu de "var3". ; Définit les données de l'élément var4 (char) dans la $tSTRUCT1. DllStructSetData($tSTRUCT1, "var4", "Hello") ; Ou 4 au lieu de "var4". ; Remarque: Cet élément peut contenir jusqu'à 128 caractères. ; Modifie les données de l'élément var4 (char) dans $tSTRUCT1, à l'index 1 du tableau de caractères (de base 1). DllStructSetData($tSTRUCT1, "var4", Asc("h"), 1) ; Affiche les résultats. MsgBox($MB_SYSTEMMODAL, "", "Struct Size: " & DllStructGetSize($tSTRUCT1) & @CRLF & _ "Struct pointer: " & DllStructGetPtr($tSTRUCT1) & @CRLF & _ "Data:" & @CRLF & _ DllStructGetData($tSTRUCT1, 1) & @CRLF & _ ; Ou "var1" à la place de 1. DllStructGetData($tSTRUCT1, "var2") & @CRLF & _ ; Ou 2 à la place de "var2". DllStructGetData($tSTRUCT1, 3) & @CRLF & _ ; Ou "var3" à la place de 3. DllStructGetData($tSTRUCT1, 4)) ; Ou "var4" à la place de 4. ; Libére les ressources utilisées par la structure. $tSTRUCT1 = 0 EndFunc ;==>Example