2009-07-08 11 views
2

Im folgenden Code, erhalte ich eine Kompilierung Fehler:Visual Basic 6.0 Übergabe als Referenz Problem

ByRef Argument type mismatch. 

Aber wenn ich ändere die Deklaration von i, j:

Dim i As Integer 
Dim j As Integer 

Der Fehler geht weg. Warum?

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 

Antwort

9

Dies liegt daran, wenn Sie dies in VB6 tun:

Dim i, j As Integer 

Auf den Compiler liest als

Dim i As Variant, j As Integer 

auf Ihren Typenkonflikt führen. Die Antwort ist, wie Sie gesagt haben, zu erklären, beide mit Typen, entweder wie in Ihrem Code:

Dim i As Integer 
Dim j As Integer 

Oder auf einer einzigen Zeile, a la:

Dim i As Integer, j As Integer 
3

In VB 6, I betrachtet eine Variante, keine Ganzzahl für den Fall, den Sie beschreiben.

Hier ist eine article, die das Verhalten beschreibt.