Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Option Strict On : Erreur de liaison tardive

3 réponses
Avatar
Cedric
Bonjour,

Utilisant Option Strict On, le compilateur m'indique des erreurs comme quoi
Option Strict On n'accepte pas les liaisons tardives.

Quelles modifications dois-je apporter au code suivant pour ne plus avoir
cette erreur

<code>

Private Sub GroupObj_DataChange(ByVal TransactionID As Integer, ByVal
Numitems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues As
System.Array, _
ByRef Qualities As System.Array, ByRef TimeStamps As System.Array)
Handles m_GroupObj.DataChange
'Mise a jour des variables membres de la classe suivant l'index de
l'evenement
Dim i As Integer, IsGood As Boolean
For i = 1 To Numitems
'Ctrl si la qualite de variable est OK
If GetQualityText(Qualities(i)) = "GOOD" Then
IsGood = True
Else
IsGood = False
Call EcrireTrace("GetQualityText = " &
GetQualityText(Qualities(i)), 3)
End If
...
next
End Sub

</code>

NB : les erreurs sont sur Qualities(i)

D'avance merci

3 réponses

Avatar
Patrice
Il ne faut pas utiliser System.Array (ce qui donne des tableaux de
"System.Object") mais indiquer le type des données stockées dans le tableau
(ByRef Qualities() As Quality par exemple).

--
Patrice

"Cedric" a écrit dans le message de news:

Bonjour,

Utilisant Option Strict On, le compilateur m'indique des erreurs comme
quoi
Option Strict On n'accepte pas les liaisons tardives.

Quelles modifications dois-je apporter au code suivant pour ne plus avoir
cette erreur

<code>

Private Sub GroupObj_DataChange(ByVal TransactionID As Integer, ByVal
Numitems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues
As
System.Array, _
ByRef Qualities As System.Array, ByRef TimeStamps As System.Array)
Handles m_GroupObj.DataChange
'Mise a jour des variables membres de la classe suivant l'index de
l'evenement
Dim i As Integer, IsGood As Boolean
For i = 1 To Numitems
'Ctrl si la qualite de variable est OK
If GetQualityText(Qualities(i)) = "GOOD" Then
IsGood = True
Else
IsGood = False
Call EcrireTrace("GetQualityText = " &
GetQualityText(Qualities(i)), 3)
End If
...
next
End Sub

</code>

NB : les erreurs sont sur Qualities(i)

D'avance merci


Avatar
Cedric
merci pour la réponse,
mais la méthode etant liée à un evenement DataChange dont le protype n'est
nullement modifiable. comment puis-je gerer cela dans le code.


"Patrice" a écrit :

Il ne faut pas utiliser System.Array (ce qui donne des tableaux de
"System.Object") mais indiquer le type des données stockées dans le tableau
(ByRef Qualities() As Quality par exemple).

--
Patrice

"Cedric" a écrit dans le message de news:

> Bonjour,
>
> Utilisant Option Strict On, le compilateur m'indique des erreurs comme
> quoi
> Option Strict On n'accepte pas les liaisons tardives.
>
> Quelles modifications dois-je apporter au code suivant pour ne plus avoir
> cette erreur
>
> <code>
>
> Private Sub GroupObj_DataChange(ByVal TransactionID As Integer, ByVal
> Numitems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues
> As
> System.Array, _
> ByRef Qualities As System.Array, ByRef TimeStamps As System.Array)
> Handles m_GroupObj.DataChange
> 'Mise a jour des variables membres de la classe suivant l'index de
> l'evenement
> Dim i As Integer, IsGood As Boolean
> For i = 1 To Numitems
> 'Ctrl si la qualite de variable est OK
> If GetQualityText(Qualities(i)) = "GOOD" Then
> IsGood = True
> Else
> IsGood = False
> Call EcrireTrace("GetQualityText = " &
> GetQualityText(Qualities(i)), 3)
> End If
> ...
> next
> End Sub
>
> </code>
>
> NB : les erreurs sont sur Qualities(i)
>
> D'avance merci





Avatar
Kosh
Essaye de 'caster' le 'Qualities(i)' dans le type attendu par la methode
GetQualityText
Par exemple si ta methode attend un long en entrée, remplace
'GetQualityText(Qualities(i))' par
GetQualityText(ctype(Qualities(i), long)).



"Cedric" a écrit dans le message de news:

merci pour la réponse,
mais la méthode etant liée à un evenement DataChange dont le protype


n'est
nullement modifiable. comment puis-je gerer cela dans le code.


"Patrice" a écrit :

> Il ne faut pas utiliser System.Array (ce qui donne des tableaux de
> "System.Object") mais indiquer le type des données stockées dans le


tableau
> (ByRef Qualities() As Quality par exemple).
>
> --
> Patrice
>
> "Cedric" a écrit dans le message de


news:
>
> > Bonjour,
> >
> > Utilisant Option Strict On, le compilateur m'indique des erreurs comme
> > quoi
> > Option Strict On n'accepte pas les liaisons tardives.
> >
> > Quelles modifications dois-je apporter au code suivant pour ne plus


avoir
> > cette erreur
> >
> > <code>
> >
> > Private Sub GroupObj_DataChange(ByVal TransactionID As Integer, ByVal
> > Numitems As Integer, ByRef ClientHandles As System.Array, ByRef


ItemValues
> > As
> > System.Array, _
> > ByRef Qualities As System.Array, ByRef TimeStamps As System.Array)
> > Handles m_GroupObj.DataChange
> > 'Mise a jour des variables membres de la classe suivant l'index


de
> > l'evenement
> > Dim i As Integer, IsGood As Boolean
> > For i = 1 To Numitems
> > 'Ctrl si la qualite de variable est OK
> > If GetQualityText(Qualities(i)) = "GOOD" Then
> > IsGood = True
> > Else
> > IsGood = False
> > Call EcrireTrace("GetQualityText = " &
> > GetQualityText(Qualities(i)), 3)
> > End If
> > ...
> > next
> > End Sub
> >
> > </code>
> >
> > NB : les erreurs sont sur Qualities(i)
> >
> > D'avance merci
>
>
>