Cäsar

ValhallasRaben

Grünschnabel
Guten Morgen, Community!

Ich wollte mich heute morgen einer Cäsarverschlüsselung widmen und habe bisher diesen Code. Die rot geschriebene Passage ist mein Problempunkt.

Code:
Public Class Form1

    Private Sub btnEncode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncode.Click
        Dim text$
        text = txttext.Text
        txtverschlüsselt.Text = encode(text)
        txttext.Text = decode(encode(text))

    End Sub

    Function encode(ByVal str As String)
        Dim str_crypt = ""
        Dim i%
        Dim verschiebung As Integer = txtverschiebung.Text
        'verschiebung = txtverschiebung.Text
        For i = 1 To Len(Str)
            str_crypt = str_crypt & Chr(Asc(Mid(Str, i, 1)) + verschiebung)
        Next i

        encode = str_crypt
    End Function

    Function decode(ByVal str_crypt As String)
        Dim str
        Dim i%
        Dim verschiebung
        verschiebung = txtverschiebung.Text
        For i = 1 To Len(str_crypt)
            Str = Str() & Chr(Asc(Mid(str_crypt, i, 1)) - verschiebung)
        Next i

        decode = Str()

    End Function

End Class

Will ich nun Encoden und drücke auf Verschlüsseln, gibt er mir aus, das eine Konvertierung in Integer ungültig ist. Hier komme ich nun nicht weiter.

Hoffe auf Hilfe!
=)
 
Die Textbox darf natürlich nicht leer sein bzw. Buchstaben haben. Du hast scheinbar einen Buchstaben oder ein Zeichen drin was den Fehler auslöst.

Edit:
C#:
private void txtverschiebung_KeyPress(object sender, KeyPressEventArgs e)
{
        if (!char.IsNumber(e.KeyChar) & (Keys)e.KeyChar != Keys.Back & e.KeyChar != '.')
        {
                e.Handled = true;
        } 
}

Damit bewirkst du das nur Zahlen eingegeben werden können.
 
Zuletzt bearbeitet:
Zurück