Bonjour,
Je vous expose un problème très bizarre que je rencontre dans une appli en vb.net. Il s'agit d'une dll de calcul qui est ensuite appelé par un programme en Vb6.
Le problème se situe au sein même de la dll.
J'ai une classe cCalcul qui a des propriétés codé classiquement de cette façon :
Dans mon code je déclare un objet cCalcul
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
18
19
20
21
22 Public Class cCalcul Private mvarcValeurTotale As Double Private mvarcFacteur As Double Public Property cValeurTotale() As Double Get mvarcValeurTotale = cValeurTotale End Get Set(ByVal Value As Double) mvarcValeurTotale = Value End Set End Property Public Property cFacteur() As Double Get mvarcFacteur = cFacteur End Get Set(ByVal Value As Double) mvarcFacteur = Value End Set End Property End Class
Et j'affecte les valeurs en fonction d'un calcul réalisé ailleurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim toto As cCalcul Set toto = New cCalcul
Si j'affiche monResultat.Facteur.Value et toto.cFacteur j'ai la même valeur, normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 With monResultat toto.cFacteur = .Facteur.Value toto.cValeurTotale = .Total.Value End With
Et o miracle :
Si j'affiche monResultat.Total.Value j'ai une valeur alors que quand j'affiche toto.cValeurTotale j'ai 0 à chaque fois.
Je comprend vraiment pas comment c'est possible.
Même si je fais :
J'obtiens encore 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2toto.cValeurTotale = 10 Msgbox toto.cValeurTotale
J'ai Option Explicit On pour la classe et le module qui l'utilise.
J'ai Option Strict On seulement pour la classe.
Le problème c'est que pour débogguer c'est pas facile vu que c'est une dll. Je ne peut pas mettre d'espions ou des points d'arrêts. A moins que quelqu'un m'explique comment faire.
Merci de vos suggestions.
Partager