Pointer sur un champ d'une structure/classe
Bonjour
J'ai une structure qui contient des données continuellement rafraichies. Elle est dans une DLL dont je ne peux pas modifier le code
Je cherche à créer une procédure qui permet d'en lire n'importe quelle valeur. Je ne sais pas à l'avance quelle variable va être lue.
J'ai tenté ce type de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 'partie dans la DLL fournie
Structure struct_READ
Dim champ_a As Integer
Dim champ_b As String
End Structure
Dim READABLE As New struct_READ ' instancie la structure
... Les variables de l'objet READABLE sont mises à jour ...
' Procédure generique qui permet de lire n'importe quelle valeur de ma structure
Private Sub READ_ONE_VALUE(ByRef my_field As object)
MsgBox(my_field.ToString)
End Sub
'Appel de la procédure pour lire un champs
Private Sub test_me()
READ_ONE_VALUE(READABLE.champ_a) ' le problème est là, cela envoi la valeur de la variable et non son adresse
End Sub |
Le soucis c'est qu'une fois que j'appelle la SUB test_me, la valeur reste figée --> champs_a est un integer et c'est sa valeur qui est copiée par l'adresse de l'object. Il faudrait utiliser un pointeur mais je ne suis pas sûr de bien m'y prendre (genre avec IntPtr).
Avez-vous une idée pour manipuler l'objet (la variable) et non sa valeur ?
Merci pour vos conseils
Dan