String ist nicht gleich String

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von HenryV.

    String ist nicht gleich String

    Hallo Leute,

    ich habe hier schon oft Lösungsansätze für meine Probleme gefunden, um weiter zu kommen mit dem was ich so für mich programmiere.
    Aber nun stehe ich vor einem Problem, bei dem ich selbst auf Google und hier nicht wirklich was zu finde.

    Ich versuche einen berechneten Aktivierungscode mit einem eingegeben Aktivierungscode zu vergleichen.
    Beide sind in einem String festgehalten.
    Die Berechnung / Erzeugung sieht so aus:

    VB.NET-Quellcode

    1. Private Function AktivierungscodeErzeugen(sText As String)
    2. Dim alphabet As String = "ß5|Ö*1$A3°Ä7=B2#ü§9C4'y6}D)8w7_E0[uF/sGq:HoI;mJk( Ki""LgM,eNc.Oa>PäQ!Rd{Sf-T&hUj\VlW^nXp%YrZ+tv]x?zö<Ü"
    3. Dim Aktivierungscode As String = ""
    4. Dim Durchgang As String = "1"
    5. For i = 0 To sText.Length - 1
    6. If alphabet.Contains(sText(i)) = True Then
    7. Dim pos As Integer = alphabet.IndexOf(sText(i))
    8. Select Case Durchgang
    9. Case "1"
    10. Aktivierungscode &= pos
    11. Durchgang = "2"
    12. Case "2"
    13. Aktivierungscode &= pos
    14. Durchgang = "3"
    15. Case "3"
    16. Aktivierungscode &= pos
    17. Durchgang = "4"
    18. Case "4"
    19. Aktivierungscode &= pos & "-"
    20. Durchgang = "1"
    21. End Select
    22. End If
    23. Next
    24. 'im folgenden wird nur abgeprüft ob das letzte Zeichen kein "-" ist wenn doch wird es weggelöscht
    25. Dim Pruefungscode As Array = Aktivierungscode.ToArray
    26. If Pruefungscode(Pruefungscode.Length.ToString - 1).ToString = "-" Then
    27. Aktivierungscode = ""
    28. Pruefungscode(Pruefungscode.Length.ToString - 1) = ""
    29. For i As Integer = 0 To Pruefungscode.Length.ToString - 1
    30. Aktivierungscode &= Pruefungscode(i).ToString
    31. Next
    32. End If
    33. Return Aktivierungscode
    34. End Function


    Der String der an die Funktion übergeben wird sieht so aus: 26042018-Lar-Her
    Der eingegebene Aktivierungscode ist folgender: 14233220-1432527-73536289-73415789
    so nun versuche ich anhand der Seriennummer einen Aktivierungscode zu erzeugen

    VB.NET-Quellcode

    1. 'Testbutton zum vergleichen
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim Test1 As String = AktivierungscodeErzeugen("26042018-Lar-Her")
    4. Dim Test2 As String = "14233220-1432527-73536289-73415789"
    5. If Test2 = Test1 Then
    6. MsgBox("Geht")
    7. Else
    8. MsgBox("geht nicht")
    9. MsgBox(Test2 & "!" & " = " & Test1 & "!") '! wird zum test angehängt
    10. End If
    11. End Sub

    Nach dem klicken auf den Button erhalte ich die Meldung "geht nicht"

    Die Strings sind beide identisch aber ich habe das Phänomen, dass der String Test1 keine zusätzlichen Zeichen angehängt bekommt ("!") wenn ich die TestMessagebox öffne.
    Hat vielleicht schon mal jemand einen solchen Effekt gehabt?

    LG
    Bull
    Bei mir hat der erzeugte String ein Leerzeichen am Ende. Somit ist der String nicht identisch.

    |14233220-1432527-73536289-73415789|
    |14233220-1432527-73536289-73415789 |

    Die Pipes kommen von mir
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Danke MrTrborn für die schnelle Antwort,
    ich habe jetzt auf diesen Tip die Strings in eine Textbox leiten lassen, aber da ist bei mir kein Leerzeichen am ende.
    Wie hast du das abgeprüft?

    Edit:
    Ich habe jetzt mir mal die Zeichenlänge ausgeben lassen und dann kommt die Info hin, aber bei mir kommt da 34 für die Stringlänge vom erzeugten String und 35 für die Stringlänge vom eingegebenen
    Edit:
    hast recht da kommt ein Zeichen zuviel mit, hatte bei der Ausgabe eben die Strings vertauscht
    Danke für die Hilfe

    Fehler entsteht bei dem Abprüfen:

    VB.NET-Quellcode

    1. Dim Pruefungscode As Array = Aktivierungscode.ToArray
    2. If Pruefungscode(Pruefungscode.Length.ToString - 1).ToString = "-" Then
    3. Aktivierungscode = ""
    4. Pruefungscode(Pruefungscode.Length.ToString - 1) = ""
    5. For i As Integer = 0 To Pruefungscode.Length.ToString - 2 '<--- Hier muss eine 2 statt einer 1 sonst nimmt er das Leerzeichen hinten mit dran
    6. Aktivierungscode &= Pruefungscode(i).ToString
    7. Next
    8. End If

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