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 : Sélectionner tout - Visualiser dans une fenêtre à part
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