Buchstaben bzw. Wörter in Value/Wert umwandeln

  • VB.NET

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von Xiantrius.

    Was ist

    Eierlein schrieb:

    'normalem' Basic-Code
    :?:
    Fährst Du mit dem Holzroller zur Schule?
    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!
    Dein Code funktioniert habe ihn so modifziert, dass er mit jedem Wort funktioniert allerdings werden nur 4 zeichen zugelassen, kann ich das irgendwie erweitern?

    Der modifzierte Code sieht jetzt so aus.
    TextBox1 = Zeichen
    TextBox2 = Hexwert
    TextBox3 = Wert der gesendet werden muss.

    VB.NET-Quellcode

    1. Dim Name As String, Hexwert As String, i As Long
    2. Name = TextBox1.Text
    3. For i = 1 To Len(Name)
    4. Hexwert = Hex$(Asc(Mid$(Name, i, 1))) & Hexwert
    5. Next
    6. TextBox2.Text = Hexwert
    7. i = Val("&H" & Hexwert)
    8. TextBox3.Text = Str$(i)



    VB.NET-Quellcode

    1. Dim Charakternamen As String = TextBox3.Text
    2. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
    3. If DoesProcesssExists("mm6") Then
    4. WriteInteger("mm6", &H90D189, CInt(Charakternamen))
    5. End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Xiantrius“ ()

    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim name As String = "Anna Amalia"
    3. Dim txt As String = ""
    4. Dim count As Integer = 0
    5. For Each zeichen As Char In name
    6. txt &= Asc(zeichen).ToString("X2")
    7. count += 1
    8. If (count Mod 4 = 0) Then
    9. txt &= Enviromnent.Newline
    10. End If
    11. Next
    12. MessageBox.Show(txt)
    13. End Sub
    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!
    Es muss doch irgendwie gehen Cheat Engine kann bis 8 Byte gehen.

    Edit:
    Dein Code verstehe ich nicht so ganz RodFromGermany.
    Würdest du mir erklären wie dein Code funktioniert?

    Gibt es vielleicht eine möglichkeit das man mehr als 4 Zeichen erlauben kann?
    Der Codestück

    VB.NET-Quellcode

    1. Int64.MaxValue

    Muss auch für irgendwas nützlich sein.
    Du willst etwas "senden". Du meinst, dieses etwas sei ein "Integer".
    Integer = 4 Byte. Ergo sind 4 Zeichen das Maximum ...


    Es gibt doch auch Array oder Float wo es mehr als 4 Bytes zulässt.
    Es muss einfach gehen... Wäre dankbar für einen beispielcode diesbezüglich :).

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Xiantrius“ ()

    Vielen dank für die Hilfe das problem ist gelöst :).... vorerst... ich teste grade.
    Sry picoflop bin eben noch ein Anfänger und hab noch viel zu lernen. :)
    Danke dir.

    Edit:
    hmmm zu früh gefreut, woran kann es liegen das der Trainer immer noch 4 Zeichen sendet?
    Es kommt zwar kein Fehler mehr wenn ich mehr als 4 Zeichen versende, aber trotzdem kommen von 5 oder mehr zeichen nur 4 an.... woran das mal wieder liegt?

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    2. Try
    3. Dim Name As String, Hexwert As String, i As Long
    4. Name = TextBox1.Text
    5. For i = 1 To Len(Name)
    6. Hexwert = Hex$(Asc(Mid$(Name, i, 1))) & Hexwert
    7. Next
    8. TextBox2.Text = Hexwert
    9. i = Val("&H" & Hexwert)
    10. TextBox3.Text = Str$(i)
    11. Catch ex As Exception
    12. End Try
    13. End Sub
    14. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    15. Dim Charakternamen As String = TextBox3.Text
    16. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
    17. If DoesProcesssExists("mm6") Then
    18. WriteLong("mm6", &H90D189, (Charakternamen))
    19. End If
    20. End If
    21. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Xiantrius“ ()

    RodFromGermany schrieb:

    Sieh Dir mal dies an:
    Sieh Dir diesen Code an, spiele ein wenig mit den Parametern und verfolge, was passiert.
    Gib ihm zunächst einen längeren Text.
    Und schmeiß Deine Hex$-Routine raus.
    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!
    Dann mach mal eine anständige Tabelle, wie es denn aussehen soll.
    Nur Input und Output, ohne Kommentare. Dann werden wir sehen.
    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!
    Ich habe es doch getestet ohne den (Hex$ funktioniert nichts hab auch rum probiert und komplett ohne hex getestet, wenn ich A zeichen sende kommt dann aufeinmal kleines e als Name raus lol. mit dem hex hab ich wenigstens zu hälfte mein problem gelöst fehlt nur noch ein code wo mir erlaubt mehr als 4 zeichen zu senden.
    Ich behaupte das nur noch irgendwas fehlt... anders kann es garnicht sein. Long befehle sind drin und WriteLong auch. Adresse stimmt 100%. Da ich weis das es nicht ohne Hex$ geht, hab ich den code auch wieder so hergestellt so das es funktioniert mit 4 zeichen.

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    2. Try
    3. Dim Name As String, Hexwert As String, i As Long
    4. Name = TextBox1.Text
    5. For i = 1 To Len(Name)
    6. Hexwert = Hex$(Asc(Mid$(Name, i, 1))) & Hexwert
    7. Next
    8. TextBox2.Text = Hexwert
    9. i = Val("&H" & Hexwert)
    10. TextBox3.Text = Str$(i)
    11. Catch ex As Exception
    12. End Try
    13. End Sub
    14. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    15. Dim Charakternamen As String = TextBox3.Text
    16. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
    17. If DoesProcesssExists("mm6") Then
    18. WriteLong("mm6", &H90D189, (Charakternamen))
    19. End If
    20. End If
    21. End Sub


    Ich hab keine ahnung was noch fehlt, aber das Spiel kann mehr als 10 Zeichen benutzen wenn ich neues Spiel mache und namen eingeben kann, also müsste es auch irgendwie über den trainer gehen.
    Ob du es so

    VB.NET-Quellcode

    1. For i = 1 To Len(Name)
    2. Hexwert = Hex$(Asc(Mid$(Name, i, 1))) & Hexwert
    3. Next
    4. TextBox2.Text = Hexwert
    5. i = Val("&H" & Hexwert)
    oder so

    VB.NET-Quellcode

    1. For Each zeichen As Char In Name
    2. Hexwert = Asc(zeichen).ToString("X2") & Hexwert
    3. Next
    4. i = Val("&H" & Hexwert)
    machst, das Ergebnis ist das Gleiche.

    Allerdings ist bei mehr als 6 Buchstaben das Ergebnis von i falsch (gerundet).

    Bei der Lösung von picoflop tritt kein Fehler auf.

    Deshalb:

    VB.NET-Quellcode

    1. Dim Name As String, out As Long, i As Integer
    2. Name = TextBox1.Text
    3. For i = 0 To Math.Min(Name.Length - 1, 7)
    4. out += (Convert.ToInt64(Name(i)) << (i * 8))
    5. Next
    6. TextBox2.Text = out.ToString("X" & Name.Length / 2.ToString) 'Hexwert
    7. TextBox3.Text = out.ToString

    Das hat aber nicht unbedingt was mit deinem Problem, das nur 4 Bytes gesendet werden, zu tun.

    Gibt's eine Beschreibung zu Writelong?
    Das ok gut das ich weis das es 2 methoden gibt .
    Allerdings wie du bereits sagtest werden weiterhin nur 4 Zeichen angezeigt wenn ich aber 5 oder mehr sende.

    WriteLong lässt praktisch zu das man mehr als 4 Byte verschicken kann an der Adresse. Soviel weis ich. Warum aber letztendlich nur 4 zeichen ankommen, ist mir ein absolutes Rätsel... vielleicht kann jemand von euch mir eine ergänzung zu meinen code geben der erzwingt mehr als 4 Bytes empfangen zu können so das mehr als 4 Zeichen ankommen.
    Würde mich echt darüber freuen damit das Thema hier mal zuende geht... xD

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    2. Dim Charakternamen As String = TextBox3.Text
    3. If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
    4. If DoesProcesssExists("mm6") Then
    5. WriteLong("mm6", &H90D189, (Charakternamen))
    6. End If
    7. End If
    8. End Sub
    9. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    10. Try
    11. Dim Name As String, out As Long, i As Integer
    12. Name = TextBox1.Text
    13. For i = 0 To Math.Min(Name.Length - 1, 7)
    14. out += (Convert.ToInt64(Name(i)) << (i * 8))
    15. Next
    16. TextBox2.Text = out.ToString(Name.Length / 2.ToString) 'Hexwert
    17. TextBox3.Text = out.ToString
    18. Catch ex As Exception
    19. End Try
    20. End Sub

    Hmm keiner eine Idee um den Code den ich ein Post weiter oben so zu vervollständigen das man wirklich mehr als 4 zeichen übertragen kann so, dass der empfang auch mehr als 4 anzeigt?
    Mir kommt gerade eine idee gibt es eine möglichkeit die zeichen direkt durch ein String Befehl an der Adresse zu senden? Vielleicht kann man dann auch mehr als 4 Zeichen senden?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Xiantrius“ ()

    RodFromGermany schrieb:

    Dann mach mal eine anständige Tabelle, wie es denn aussehen soll.
    Nur Input und Output, ohne Kommentare. Dann werden wir sehen.
    Willst Du nun, dass Dir geholfen wird oder nicht?
    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!