Frage

Im folgenden Code, erhalte ich einen Kompilierung-Fehler, weil i als Variante behandelt wird. Der Fehler ist:. "ByRef Argument type mismatch"

Aber wenn ich die Parameter ByVal passieren, gibt es kein Fehler, 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
War es hilfreich?

Lösung

ByVal autoconverts die Variante in eine ganze Zahl, weil sie einen Wert passiert. Während die ByRef versucht, eine Variable zu übergeben, die Sie in den Subroutinen ändern können. Im Wesentlichen ist I X im ByRef Szenario. VB6 nicht zulässt, dass Sie eine Variante als ganze Zahl ändern.

Andere Tipps

Wenn Sie mehrere Variablen in einer einzigen Zeile dh Dim i, j as Integer j Dim wird als ganze Zahl gedimmt, aber i ist eine Variante. Sie müssen explizit jede Variable Art zu erklären. Ich ziehe es nur eine einzige Variable pro Zeile enthalten.

Dim i As Integer, j As Integer

oder

Dim i As Integer
Dim j As Integer

Das ist etwas, was ich gelernt, wenn ich eine andere Programmierer den Code geerbt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top