Problem bei Erstellung eines NetzID Kalkulators

Mendred

Grünschnabel
Hallo,
ich schreibe grad aus Langeweile einen NetzID Kalkulator.
Ich bin VB Anfänger und versuche mich grad an mehrdimensionalen Arrays.
Ich bin mit meinem Latein am Ende, ich weiss nicht genau, warum das Programm die Fehlerfunktion aufruft. Ich hab meinen Quellcode von dem Programm angehängt, ich hoffe mir kann jemand helfen.

Das Programm wandelt eingegebene Zahlen zuerst in Dualzahlen um und vergleicht diese dann, also IP mit Subnetmask, um daraus die NetzID zu erhalten. Die Zahlen werden also Bitweise UND verknüpft. Leider steckt da irgendwo der Fehler drin.
Also
IP: 192.168.1.35
Subnetmask: 255.255.255.0
NetzID: 192.168.1.0

Raus kommen aber Zahlen wie 0.0.128.0 und dann erfolgt der Aufruf des Fehlerfensters.
Wer das komplette Programm benötigt, einfach melden.

Code:
Private Sub But_Calc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Calc.Click
        On Error GoTo ErrorFunction
        Dim var_ipbox1 As Integer = CInt(IP_Box1.Text)
        Dim var_ipbox2 As Integer = CInt(IP_Box2.Text)
        Dim var_ipbox3 As Integer = CInt(IP_Box3.Text)
        Dim var_ipbox4 As Integer = CInt(IP_Box4.Text)
        Dim var_subbox1 As Integer = CInt(Sub_Box1.Text)
        Dim var_subbox2 As Integer = CInt(Sub_Box2.Text)
        Dim var_subbox3 As Integer = CInt(Sub_Box3.Text)
        Dim var_subbox4 As Integer = CInt(Sub_Box4.Text)
        Dim var_binIP(4, 8) As Integer
        Dim var_binSub(4, 8) As Integer
        Dim var_binNetID(4, 8) As Integer
        Dim var_NetID(4) As Integer
        Dim var_puffer As Integer = 0
        Dim var_puffer2 As Integer = 0
        Dim var_i As Integer = 0
        Dim var_h As Integer = 0

        If var_ipbox1 >= 256 Or var_ipbox2 >= 256 Or var_ipbox3 >= 256 Or var_ipbox4 >= 256 Then
            FehlerForm.Show()
        ElseIf var_subbox1 >= 256 Or var_subbox2 >= 256 Or var_subbox3 >= 256 Or var_subbox4 >= 256 Then
            FehlerForm.Show()
        Else

            'Umwandlung der IP von Dezimal in Dual
            For var_h = 1 To 4 Step +1
                If var_h = 1 Then
                    var_puffer2 = var_ipbox1
                ElseIf var_h = 2 Then
                    var_puffer2 = var_ipbox2
                ElseIf var_h = 3 Then
                    var_puffer2 = var_ipbox3
                ElseIf var_h = 4 Then
                    var_puffer2 = var_ipbox4
                End If
                For var_i = 8 To 1 Step -1
                    var_puffer = CInt(var_puffer2 / 2)
                    var_binIP(var_h, var_i) = var_puffer2 Mod 2
                    var_puffer = var_puffer
                Next var_i
            Next var_h

            'Umwandlung der Subnetmask von Dezimal in Dual
            For var_h = 1 To 4 Step +1
                If var_h = 1 Then
                    var_puffer2 = var_subbox1
                ElseIf var_h = 2 Then
                    var_puffer2 = var_subbox2
                ElseIf var_h = 3 Then
                    var_puffer2 = var_subbox3
                ElseIf var_h = 4 Then
                    var_puffer2 = var_subbox4
                End If
                For var_i = 8 To 1 Step -1
                    var_puffer = CInt(var_puffer2 / 2)
                    var_binSub(var_h, var_i) = var_puffer2 Mod 2
                    var_puffer2 = var_puffer
                Next var_i
            Next var_h

            'Vergleich der Dualzahlen
            For var_h = 1 To 4 Step +1
                For var_i = 8 To 1 Step -1
                    If var_binIP(var_h, var_i) = 1 And var_binSub(var_h, var_i) = 1 Then
                        var_binNetID(var_h, var_i) = 1
                    Else
                        var_binNetID(var_h, var_i) = 0
                    End If
                Next var_i
            Next var_h

            'Potenzierung der Zahlen
            For var_h = 1 To 4 Step +1
                For var_i = 8 To 1 Step -1
                    var_NetID(var_h) = CInt(var_NetID(var_h) + (var_binNetID(var_h, var_i) * (2 ^ (var_i - 1))))
                Next var_i
            Next var_h

            'Ausgabe der Zahle
            IDBox1.Text = CStr(var_NetID(1))
            IDBox2.Text = CStr(var_NetID(2))
            IDBox3.Text = CStr(var_NetID(3))
            IDBox4.Text = CStr(var_NetID(4))
        End If
        'Bei einem Programmfehler öffnet das Programm das Fehlerfenster
ErrorFunction:
        FehlerForm.Show()
    End Sub
 
Zurück