Problem mit and

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Problem mit and

    Hallo ich schon wieder,
    ich wollte einen leichten codierer für meinen freund machen weil sein bruder imer gespeicherte nachrichten ließt machen ;)

    Nur hatte ich das Problem das wenn ich es so gemacht hab:

    VB.NET-Quellcode

    1. Dim umwandeln
    2. Sub
    3. umwandeln = RichTextBox1.Text
    4. If TextBox1.Text = "1" Then
    5. umwandeln = umwandeln.replace("a", "e")
    6. umwandeln = umwandeln.replace("e", "z")
    7. umwandeln = umwandeln.replace("z", "d")
    8. End Sub


    hier war das Problem das nun alle "a", "e" und "z" zu "d" wurden
    also hab ich versucht das Problem mit and zu lösen

    VB.NET-Quellcode

    1. Dim umwandeln
    2. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    3. umwandeln = RichTextBox1.Text
    4. If TextBox1.Text = "1" Then
    5. umwandeln = umwandeln.Replace("a", "e") And umwandeln = umwandeln.Replace("b", "o") And umwandeln = umwandeln.Replace("c", "a") And umwandeln = umwandeln.Replace("d", "b") And umwandeln = umwandeln.Replace("e", "z") And umwandeln = umwandeln.Replace("f", "l") And umwandeln = umwandeln.Replace("g", "p") And umwandeln = umwandeln.Replace("h", "q") And umwandeln = umwandeln.Replace("i", "m") And umwandeln = umwandeln.Replace("j", "s") And umwandeln = umwandeln.Replace("k", "t") And umwandeln = umwandeln.Replace("l", "y") And umwandeln = umwandeln.Replace("m", "r") And umwandeln = umwandeln.Replace("n", "v") And umwandeln = umwandeln.Replace("o", "n") And umwandeln = umwandeln.Replace("p", "w") And umwandeln = umwandeln.Replace("q", "u") And umwandeln = umwandeln.Replace("r", "x") And umwandeln = umwandeln.Replace("s", "g") And umwandeln = umwandeln.Replace("t", "i") And umwandeln = umwandeln.Replace("u", "h") And umwandeln = umwandeln.Replace("v", "f") And umwandeln = umwandeln.Replace("w", "c") And umwandeln = umwandeln.Replace("x", "j") And umwandeln = umwandeln.Replace("y", "k") And umwandeln = umwandeln.Replace("z", "d")
    6. Button1.Enabled = True
    7. Label5.Visible = False
    8. Else
    9. Label5.Visible = True
    10. End If
    11. RichTextBox1.Text = umwandeln
    12. End Sub


    Jetzt bekomme ich immer die Fehler meldung:
    Ungültige Konvertierung von der Zeichenfolge in Typ Boolean.

    Vorher kam das nicht

    ich hab sehr wahrscheinlich nur ein Brett vorm Kopf aber den Fehler seh ich net...

    MfG Nixodas
    AND hat da nix zu suchen... Du musst lediglich die Reihenfolge beachten:

    Statt
    umwandeln = umwandeln.replace("a", "e")
    umwandeln = umwandeln.replace("e", "z")
    umwandeln = umwandeln.replace("z", "d")
    solltest du
    umwandeln = umwandeln.replace("z", "d")
    umwandeln = umwandeln.replace("e", "z")
    umwandeln = umwandeln.replace("a", "e")

    verwenden.

    Im 1. Teil überschneiden sich die Buchstaben. Beim 2. Teil eben nicht.
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer

    Nixodas schrieb:

    weil das is ja schon bissle aufwendig

    Armer Mensch. Du hast da voll mein Mitleid ...

    Die meisten "guten" Wege erfordern weniger Aufwand. NACHDEM man natürlich mit viel Schweiß und Mühe programmieren gelernt hat.

    Jedenfalls kannst du 2 oder mehr Anweisungen (!) nicht per "and" verknüpfen. Allerdings funzt der von Milaim gezeigte Weg natürlich so auch nicht.
    a = "abc"
    a = a.replace("a","c") -> cbc (Jetzt is schon Information verlorengegangen!)
    a = a.replace("c","d") -> dbd
    Moment: Das was ich gezeigt habe funktioniert schon. Okay, echt billig muss ich zugeben, aber ich wollte mich an seinem Code halten.

    Information geht auf jedenfall hier nicht verloren, wenn man keine Buchstaben überschneidet.

    Beispiel:

    VB.NET-Quellcode

    1. Dim umwandeln As String = "zeezeeaa"
    2. 'was auch immer er machen will
    3. umwandeln = umwandeln.replace("z", "d")
    4. umwandeln = umwandeln.replace("e", "z")
    5. umwandeln = umwandeln.Replace("a", "e")
    6. 'und wieder zurück
    7. umwandeln = umwandeln.Replace("e", "a")
    8. umwandeln = umwandeln.Replace("z", "e")
    9. umwandeln = umwandeln.Replace("d", "z")
    10. MessageBox.Show(umwandeln) 'ausgabe ist zeezeeaa
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer

    milaim schrieb:

    aber ich wollte mich an seinem Code halten.

    Sein Code (die megalange Zeile) versucht die Buchstaben von a-z auf die Buchstaben von a-z abzubilden. Dazu ersetzt er NACHEINANDER alle bucstaben im SELBEN String mit einem anderen. Und das geht weder bei dir, noch bei ihm. Bei dir geht es nur weil du eine TEILMENGE von a-z auf eine TEILMENGE von a-z abbildest und beide Teilmengen haben ein leere Schnittmenge. Das ist aber nicht das was er will.

    dieser Code zb geht:

    VB.NET-Quellcode

    1. Public Class BuchstabenTauscher
    2. Private Const Quelle As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    3. Private Const Ziel As String = "XWFOJITGKSRUMNELAPVYHCQBDZ"
    4. Public Shared Function Encode(ByVal s As String) As String
    5. Return Convert(s, Quelle, Ziel)
    6. End Function
    7. Public Shared Function Decode(ByVal s As String) As String
    8. Return Convert(s, Ziel, Quelle)
    9. End Function
    10. Private Shared Function Convert(ByVal s As String, ByVal q As String, ByVal z As String) As String
    11. Dim sb As New System.Text.StringBuilder
    12. Dim i As Integer
    13. For Each c As String In s
    14. If q.Contains(c) Then
    15. i = q.IndexOf(c)
    16. sb.Append(z(i))
    17. End If
    18. Next
    19. Return sb.ToString
    20. End Function
    21. End Class