2009-07-08 8 views
2

Dans le code suivant, je reçois une erreur de compilation:Visual Basic 6.0 En passant par problème de référence

ByRef Argument type mismatch. 

Mais si je change la déclaration de i, j:

Dim i As Integer 
Dim j As Integer 

L'erreur s'en va. Pourquoi?

Private Sub Command2_Click() 
Dim i, j As Integer 
    i = 5 
    j = 7 
    Call Swap(i, j) 
End Sub 

Public Sub Swap(ByRef X As Integer, ByRef Y As Integer) 
Dim tmp As Integer 
    tmp = X 
    X = Y 
    Y = tmp 
End Sub 

Répondre

9

En effet, lorsque vous faites cela en VB6:

Dim i, j As Integer 

Il lit le compilateur

Dim i As Variant, j As Integer 

menant à votre incompatibilité de type. La réponse est, comme vous le dites, de déclarer à la fois avec des types, que ce soit comme dans votre code:

Dim i As Integer 
Dim j As Integer 

Ou sur une seule ligne, à la:

Dim i As Integer, j As Integer 
3

En VB 6, I est considéré une variante, pas un entier dans le cas que vous décrivez. Il s'agit d'un article qui décrit le comportement.

Questions connexes