D�finit la donn�e d'un �l�ment d'une structure.
DllStructSetData ( Struct, Element, value [, index] )
Struct | La structure retourn�e par DllStructCreate(). |
Element | L'index, de base 1, de l'�l�ment de la structure auquel vous souhaitez acc�der, ou le nom de l'�l�ment tel qu'il est d�fini dans DllStructCreate(). |
value | La nouvelle valeur � placer dans la structure. |
index | [optionnel] Pour les �l�ments qui sont dans un tableau, ce param�tre sp�cifie l'index de base 1 � d�finir. S'il est omis ou si le mot-cl� Default est utilis�, alors autant de valeurs que possible seront d�finies dans l'�l�ment, � partir de l'index 1 (Utile pour d�finir rapidement des cha�nes). Ne pas utiliser pour des �l�ments qui ne sont pas dans un tableau. |
Succ�s: | Retourne la valeur qui est relue dans la structure. |
�chec: | Retourne 0. |
@error: |
1 = La structure n'est pas une structure correcte, retourn�e par DllStructCreate(). 2 = L'�l�ment est hors limites ou inconnu. 3 = L'index est limites. 4 = Le type de donn�e de l'�l�ment est inconnu. 5 = index <= 0. |
Lorsque l'�l�ment est char[n], wchar[n] ou byte[n], la donn�e peut �tre une cha�ne. byte[n] accepte aussi les donn�es binaires. Sinon la donn�e doit avoir un type AutoIt compatible avec le type de l'�l�ment, ou un nombre qui sera converti dans le type requis.
Les cha�nes natives AutoIt sont implicitement converties en ANSI pour �tre copi�es dans un �l�ment char[n] ou byte[n]. Vous aurez besoin de convertir une cha�ne native Unicode en UTF8 quand l'�l�ment attend cet encodage (par exemple avec DllCall).
DllStructCreate, DllStructGetData, DllStructGetSize
#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