tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
2387
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    badboy10 badboy10 ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    6
    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
     

  2. #2
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    [COLOR=Blue] Public Function [/COLOR]HexToDez([COLOR=Blue]ByVal [/COLOR]HexCode [COLOR=Blue]As String[/COLOR]) [COLOR=Blue]As String[/COLOR][INDENT][COLOR=Green]' Ergebnis-Variable initialisieren[/COLOR]
    [COLOR=Blue]Dim [/COLOR]Result [COLOR=Blue]As String[/COLOR] = [COLOR=DarkRed]""[/COLOR]
    [COLOR=Green] ' String an Leerzeichen auftrennen[/COLOR]
    [COLOR=Blue]Dim [/COLOR]Items() [COLOR=Blue]As String[/COLOR] = HexCode.Split(Chr(32))
     
    [COLOR=Green] ' Zeichen durchlaufen[/COLOR]
    [COLOR=Blue] For Each[/COLOR] Item [COLOR=Blue]As String In[/COLOR] Items[INDENT][COLOR=Green]' Zeichen umwandeln und dem Ergebnis hinzufügen[/COLOR]
    Result &= Val([COLOR=DarkRed]"&h"[/COLOR] & item) & Chr(32)
    [/INDENT][COLOR=Blue]End For[/COLOR]
     
    [COLOR=Green] ' Letztes Leerzeichen entfernen[/COLOR]
    Result = Result.Trim()
     
    [COLOR=Green] ' Ergebnis zurückgeben[/COLOR]
    [COLOR=Blue]Return [/COLOR]Result
    [/INDENT][COLOR=Blue]End Function[/COLOR]
    Gruß
    PhoenixLoe
     

  3. #3
    badboy10 badboy10 ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    6
    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
     

  4. #4
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    Wenn du die obige Funktion verwendest, geht das folgendermaßen in der Button-Click-Funktion:

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

    Gruß
    PhoenixLoe
     

  5. #5
    badboy10 badboy10 ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    6
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    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
     

  6. #6
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    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 :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    [COLOR=Blue]Public Class[/COLOR] Form1
     
    [COLOR=Blue]Public Function[/COLOR] HexToDez([COLOR=Blue]ByVal [/COLOR]HexCode [COLOR=Blue]As String[/COLOR]) [COLOR=Blue]As String[/COLOR]
     
       [COLOR=Green] ' Ergebnis-Variable initialisieren [/COLOR]
        [COLOR=Blue]Dim [/COLOR]Result [COLOR=Blue]As String[/COLOR] = [COLOR=DarkRed]"" [/COLOR]
     
        [COLOR=Green]' String an Leerzeichen auftrennen [/COLOR]
        [COLOR=Blue]Dim [/COLOR]Items() [COLOR=Blue]As String[/COLOR] = HexCode.Split(Chr(32)) 
        [COLOR=Green]' Zeichen durchlaufen [/COLOR]
        [COLOR=Blue]For Each[/COLOR] Item [COLOR=Blue]As String In[/COLOR] Items
     
            [COLOR=Green]' Zeichen umwandeln und dem Ergebnis hinzufügen [/COLOR]
            Result &= Val([COLOR=DarkRed]"&h"[/COLOR] & Item) & Chr(32) 
     
        [COLOR=Blue]End For [/COLOR]
     
        [COLOR=Green]' Letztes Leerzeichen entfernen [/COLOR]
        Result = Result.Trim() 
     
        [COLOR=Green]' Ergebnis zurückgeben [/COLOR]
        [COLOR=Blue]Return [/COLOR]Result 
     
    [COLOR=Blue]End Function[/COLOR]
     
    [COLOR=Blue]Private Sub [/COLOR]Button_Berechnen_Click([COLOR=Blue]ByVal [/COLOR]Sender[COLOR=Blue] As Object[/COLOR], [COLOR=Blue]ByVal [/COLOR]e [COLOR=Blue]As [/COLOR]System.EventArgs) [COLOR=Blue]Handles [/COLOR]Button_Berechnen.Click[INDENT]TextBox_Dez.Text = HexToDez(TextBox_Hex.Text)
    [/INDENT][COLOR=Blue]End Sub[/COLOR]
     
    [COLOR=Blue]End Class[/COLOR]
    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.
     

  7. #7
    badboy10 badboy10 ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    6
    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?
     

  8. #8
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    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 :
    1
    
    [COLOR=Blue]If [/COLOR]e.KeyChar = Chr(13) [COLOR=Blue]Then [/COLOR]Button_Berechnen.PerformClick()

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

    Gruß
    PhoenixLoe
     

  9. #9
    badboy10 badboy10 ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    6
    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
     

  10. #10
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    Gleichfalls und gern geschehen!
     

Ähnliche Themen

  1. Bitte helft mir...:(?
    Von Clarice im Forum Photoshop
    Antworten: 5
    Letzter Beitrag: 20.07.07, 15:48
  2. Antworten: 4
    Letzter Beitrag: 18.07.05, 09:50
  3. Bitte helft mir.....
    Von Anja im Forum HTML-Editoren
    Antworten: 13
    Letzter Beitrag: 30.04.03, 10:28
  4. Bitte helft mir
    Von Gohan im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 16.09.02, 20:14
  5. Bitte helft mir ************!
    Von ReFresher im Forum Photoshop
    Antworten: 3
    Letzter Beitrag: 22.10.01, 16:19