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.
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