Hex to Dezimal Programm ,Bitte helft mir

badboy10

Grünschnabel
Hi leute
Ich hab mir jetzt mal vorgenommen ein bisschen mit vb.net zu programmieren und wollte mit einem Hex2Dez-Programm anfangen.
Ha es eigentlich fertig aber ich wollte es so machen, dass wenn ich nach zwei Zeichen z.B. 7A (Hex) in der Textbox ein Leerzeichen mache und dass Programm dann auch automatisch ein Leerzeichen in der Ausgabe-Textbox der Dezimalzahl macht, aber ich krieg das nicht hin.
Im Moment ist es so dass wenn ich zwei hexa-zahlen eingebe er dann die richtige zahl ausgibt aber wenn ich zwei weitere hinzufüge gibt er eine 5-stellige zahl aus.Ich wollte es aber so machen, dass es nach jeder 2-ten hexa-zahl ein leerzeichen in beiden textboxen macht und die werte einezeln berechnet.

So ist es:
7A B6 (Hex)

31414 (Dez)

So soll es sein:
7A B6 (Hex)

122 182 (Dez)


Hier noch mein Code:

Public Class Form1

Private Sub Button_Berechen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Berechen.Click

Dim s As String = ""
Dim value As Integer
s = TextBox_Hex.Text
value = Val("&h" & s)

End Sub

End Class
 

PhoenixLoe

Erfahrenes Mitglied
Hi badboy,

das Problem ist, dass die Val-Funktion Leerzeichen völlig kalt lässt. Daher musst du die Zeichen splitten und anschließend umwandeln. Außerdem kennt der Integer-Datentyp natürlich keine Leerzeichen. Das geht nur bei Strings. Versuch's mal mit folgender Funktion:

Code:
 Public Function HexToDez(ByVal HexCode As String) As String' Ergebnis-Variable initialisieren
Dim Result As String = ""
 ' String an Leerzeichen auftrennen
Dim Items() As String = HexCode.Split(Chr(32))

 ' Zeichen durchlaufen
 For Each Item As String In Items' Zeichen umwandeln und dem Ergebnis hinzufügen
Result &= Val("&h" & item) & Chr(32)
End For

 ' Letztes Leerzeichen entfernen
Result = Result.Trim()

 ' Ergebnis zurückgeben
Return Result
End Function
Gruß
PhoenixLoe
 

badboy10

Grünschnabel
Hi
Danke erstmal für deine Antwort.
Aber ich habe ein Problem. Ich weiß leider nicht wie ich meine Hex-Textbox, Dez-Textbox und meinen Button_Berechnen einbauen muss. Also in der Hex-Textbox (xx xx xx xx) die hexa-zahl eingeben und in der Dez-Textbox die dezimalzahl so ausgeben (xxx xxx xxx xxx).
Das umrechnen soll dann passieren, wenn ich auf den Button:berechnen klicke.

Bitte helft mir.

Danke
 

PhoenixLoe

Erfahrenes Mitglied
Wenn du die obige Funktion verwendest, geht das folgendermaßen in der Button-Click-Funktion:

Code:
Dez_TextBox.Text = HexToDez(Hex_TextBox.Text)

Gruß
PhoenixLoe
 

badboy10

Grünschnabel
weiß nicht aber irgendwie t das immer noch nicht. er macht gar nichts wenn ich auf den button klicke.

Hier noch mal mein vollständiger code:

Code:
Public Class Form1

    Public Function HexToDez(ByVal HexCode As String) As String
        ' Ergebnis-Variable initialisieren
        Dim Result As String = ""
        ' String an Leerzeichen auftrennen
        Dim Items() As String = HexCode.Split(Chr(32))

        ' Zeichen durchlaufen
        For Each Item As String In Items

        Next

        ' Zeichen umwandeln und dem Ergebnis hinzufügen Result &= Val("&h" & item) & Chr(32) 

        ' Letztes Leerzeichen entfernen
        Result = Result.Trim()

        ' Ergebnis zurückgeben
        Return Result
    End Function
    
    Private Sub Button_Berechen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Berechen.Click
        TextBox_Dez.Text = HexToDez(TextBox_Hex.Text)
    End Sub
End Class
 

PhoenixLoe

Erfahrenes Mitglied
Wenn das dein Code ist, dann kann's auch nicht funktionieren. Schau dir mal meinen obigen Post an und vergleiche ihn mit deiner Funktion. Zwischen der For Each - Schleife steht bei dir nichts, was er ausführen könnte, und das, was da stehen sollte, ist bei dir darunter auskommentiert.

Nimm mal lieber das hier :rolleyes::

Code:
Public Class Form1

Public Function HexToDez(ByVal HexCode As String) As String

    ' Ergebnis-Variable initialisieren 
    Dim Result As String = "" 

    ' String an Leerzeichen auftrennen 
    Dim Items() As String = HexCode.Split(Chr(32)) 
    ' Zeichen durchlaufen 
    For Each Item As String In Items

        ' Zeichen umwandeln und dem Ergebnis hinzufügen 
        Result &= Val("&h" & Item) & Chr(32) 

    End For 

    ' Letztes Leerzeichen entfernen 
    Result = Result.Trim() 

    ' Ergebnis zurückgeben 
    Return Result 

End Function

Private Sub Button_Berechnen_Click(ByVal Sender As Object, ByVal e As System.EventArgs) Handles Button_Berechnen.ClickTextBox_Dez.Text = HexToDez(TextBox_Hex.Text)
End Sub

End Class
Gruß
PhoenixLoe

PS: Wenn du aus dem Forum hier Code kopierst, wird er beim Einfügen falsch formatiert. Du musst also nachträglich das Ganze anpassen.
 

badboy10

Grünschnabel
Jo du bist spitze es geht. Hätte aber noch 2 fragen.

1. wie kann ich zwischen den dezimalzahlen den abstand ändern z.b in einen punkt oder so?

2. W ie mache ich das mit der enter-taste wenn ich die drücke, dass der button_berechnen gedrückt wird?
 

PhoenixLoe

Erfahrenes Mitglied
OK, die zweite Frage lässt sich leicht beantworten.
Als erstes musst du die Eigenschaft AcceptsReturn des Textfelds auf True setzen. Anschließend erstellt du das KeyPress-Event der TextBox und fügst folgenden Code ein:

Code:
If e.KeyChar = Chr(13) Then Button_Berechnen.PerformClick()

Deine erste Frage habe ich allerdings nicht wirklich verstanden. Könntest du die bitte noch einmal genauer schildern?

Gruß
PhoenixLoe
 

badboy10

Grünschnabel
Jo danke meine erste frage hab ich schon gelöst.

Ich muss mich recht herzlich bei dir bedanken.

Danke,Danke,Danke,Danke,Danke,Danke :)

Frohe Weihnachten