Kein Ergebnis bei Rechnung

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Xylon.

    Kein Ergebnis bei Rechnung

    Hallo. Also ich habe ein programm bei dem ich mit Hex rechne. Und egal was ich mache, ich bekomme kein Ergebnis. Hier mein Code:

    VB.NET-Quellcode

    1. 'deklarationen
    2. Dim index1 = IndexOfNthContent(TextBox1.Text, "05", 1)
    3. Dim adress1 = Mid(TextBox1.Text, index1, 9)
    4. Dim adressandvalue = Mid(TextBox1.Text, index1, 19)
    5. Dim value = Mid(adressandvalue, 11, 9)
    6. Dim two = Mid(TextBox1.Text, index1, 3)
    7. Dim adressvalue = 1 & Mid(adress1, 4, 9)
    8. 'position der adresse
    9. Dim valueX = HextoDec(adressvalue) / 4 + 1
    10. 'index des wertes
    11. Dim valX As Integer = CInt(valueX * 8 - 7)
    12. 'wert der adresse in datei
    13. Dim val As String = Mid(RichTextBox3.Text, CInt(valX), 8)
    14. 'rausfinden der anzahl in datei(rtb)
    15. 'region
    16. '------------------------------- Hier liegt der Fehler
    17. Dim regX As String = Mid(RichTextBox3.Text, 1, IndexOfNthContent(RichTextBox3.Text, val, 1))
    18. '-------------------------------
    19. 'zähler
    20. Dim count = StrCount(regX, CStr(valueX))
    21. 'index des Xten wertes
    22. Dim resX As Integer = IndexOfNthContent(RichTextBox2.Text, val, CInt(count))
    23. 'diesen wert in hex ausgeben
    24. Dim inhex As String = CStr(resX / 8 * 4)
    25. 'text aus tb1 ersetzen und ausgeben
    26. TextBoxOut.Text = TextBox1.Text.Replace(adressandvalue, two + Hex(inhex) & Space(1) + value)


    Entschuldigung für die Unordnung, aber bei dieser Rechnung muss ich die Codes in ihre Einzelteile zerlegen. Alle Deklarationen vor regX (eine bestimmte Region) sind korrekt. Nun möchte ich die Region vom ersten Zeichen in der rtb bis zum Index der Variable val haben. Komisch ist besonders das es bei den anderen Codes funktioniert, hier nicht...

    Hier mal kurz die Erklärungen für die oberen Variablen:
    Spoiler anzeigen

    Der Code ist: 057FF4D8 6C6F6C00

    index1 ist der Index von 05 in der tb 1

    adress1 ist Variable 057FF4D8

    05 ist Variable two

    17FF4D8 ist Variable adressvalue

    057FF4D8 6C6F6C00 ist Variable adressandvalue

    6C6F6C00 ist Variable value


    Jedenfalls bekomme ich kein Ergebnis und hoffe hier weiß jemand eine Lösung.
    Danke im Voraus.
    Erstmal würde ich den ganzen VB6 Kram rauswerfen. Hier findest du alles, was du falsch machst mit der richtigen .Net Alternative:
    [VB 2010] Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen
    Mfg
    Vincent

    Xylon schrieb:

    bei dem ich mit Hex rechne.
    Was soll das?
    Die Hexadezimal-Darstellung ist lediglich eine von mehreren String-Repräsentationen von Ganzzahl-Werten.
    Also:
    Konvertriere die Hex-Zahl in eine Zahl, z.B. Integer oder Long, rechne damit und konvertiere sie zur Ausgabe wieder in einen Hex-String.

    VB.NET-Quellcode

    1. Dim value = Convert.ToInt64("123456789abcdef0", 16)
    2. Dim txt = value.ToString("X")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany: Das mache ich ja auch so, erst konvertiere ich zu dezimal, rechne damit und gebe sie am Ende wieder als Hex aus. Aber wie gesagt liegt da nicht das Problem. Ich verstehe einfach nicht wieso der mir bei dem markierten Code nichts anzeigt, obwohl der Index auch angezeigt wird...

    @VincentTB: Ich arbeite gerne mit VB6 und komme bestens damit zurecht. Die Codes funzen auch. :rolleyes:
    @Xylon: Dann setz doch einfach mal einen Haltepunkt drauf und verfolge den Ablauf Schritt für Schritt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany: Hab ich ja schon :/ Ich versteh echt nicht was da falsch ist, der index den ich als Ende festgelegt hab ist auch korrekt...Vielleicht sollte ichs mal mit ner anderen Konvertierung versuchen oder so.
    Was ist IndexOfNthContent() für eine Funktion?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany: Die gibt mir den Index eines Wertes bis zu einem Xten Vorkommen an^^ Vielleicht kann man sich ja eine Funktion basteln die einen Wert bis zu einem bestimmten Vorkommen zählt?

    z.B.

    VB.NET-Quellcode

    1. Private Function searchtoXthvalue (Byval start As Integer, Byval value As String, Byval end As Integer) As Integer
    2. For i = start to end
    3. Next
    4. End Function


    So ungefähr und dann in der Schleife suchen?

    Naja aber ich habs jetzt eh andersweitig gelöst. :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Xylon“ ()

    Xylon schrieb:

    den Index eines Wertes
    Sieh Dir mal die Überladungen von IndexOf(...) an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany: Ja klar Anfang bringt mir aber nichts und count auch nicht weil ja Wissen muss wie oft der Wert bis zu einem bestimmten Wert vorkomm. Ich weiß zwar wie viele Zeichen bis zum Vorkommen des Wertes da sind, aber ich muss ja die Anzahl herausfinden, nicht den Index. Naja ich hab inzwischen den Code nochma umgeschrieben und jetzt funktioniers mehr oder weniger.
    Deswegen die Überladung von IndexOf().
    Zuerst Startindex 0 und dann Startindex (n+1), damit Du den Wert nicht beliebig oft findest.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!