2009-07-08 2 views
2

В следующем коде я получаю ошибку во время компиляции:Visual Basic 6.0 Передача ссылочной проблемы

ByRef Argument type mismatch. 

Но если изменить декларацию I, J к:

Dim i As Integer 
Dim j As Integer 

ошибка уходит. Зачем?

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 

ответ

9

Это происходит потому, что когда вы делаете это в VB6:

Dim i, j As Integer 

Он читает компилятором, как

Dim i As Variant, j As Integer 

ведущий к вашему несовпадения типа. Ответ, как вы сказали, чтобы объявить как с типами, либо в вашем коде:

Dim i As Integer 
Dim j As Integer 

Или на одной линии, а-ля:

Dim i As Integer, j As Integer 
3

В VB 6, I считается вариант, а не целое число в случае, который вы описываете.

Вот article, описывающий поведение.

Смежные вопросы