# VB-Cäsar Verschlüsselung



## Golox (21. März 2007)

Hallo,
wir machen im Informatikunterricht momentan Verschlüsselung usw.
Nun soll ich in VB ein Programm erstellen, mitdem es möglich ist einen Text mit der Cäsar-Methode zu verschlüsseln. (Bei der Cäser Methode wird jeder einzelne Buchstabe eines Textes um x Buchstaben verschoben. z.B. "Verschiebung" beträgt 4, der Text ist "hallo" und wird nach der Verschlüsselung zu "lepps".)
In VB sieht dass dann folgendermaßen aus:
Ich habe 3 Textboxen und einen Button. Eine, in der ich die "Verschiebung" eintrage, eine in die ich den zu verschlüsselnden Text eintrage und eine, in der der verschlüsselte Text nachdem man auf den Button geklickt hat angezeigt wird.
Code ist dieser hier:



Private Sub cmdverschlüsseln_Click()

Dim text$
text = txttext.text
txtverschlüsselt.text = encode(text)
txttext.text = decode(encode(text))

End Sub

Function encode(str As String)
Dim str_crypt$
Dim i%
Dim verschiebung As Integer
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(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


Nun zum Problem. Wenn ich den Code und die Form im VB-Editor von Excel öffne und starte klappt alles. Nun will ich das ganze aber unter Visual Studios programmieren. Wenn ich jetzt genau die gleiche Form erstelle, diesen Code benutze und das Programm starte, kommt diese Meldung hier:
"Die str_crypt Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten."

Bitte um Hilfe...

Mit freundlichen Grüßen Golox


----------



## Philipp9494 (21. März 2007)

Hallo Golox

Ich habe den Code 1:1 kopiert und bei mir klappt alles prima (Ich habe die Steuerelemente richtig bennent).

Mir fällt zwar nicht ein was falsch sein könnte.

Vl. ist es die Schuld des Compilers. Welchen verwendest du? Ich verwende VB 6.0

Liebe Grüße

Philipp9494


----------



## cesupa (21. März 2007)

Also dem Fehler nach zu Urteilen gibt es hier ein Problem:


```
For i = 1 To Len(str)
str_crypt = str_crypt & Chr(Asc(Mid(str, i, 1)) + verschiebung)
Next i
```

str_crypt ist da ja noch nicht initialisiert und du willst es schon zuweisen. Versuch mal zuvor in str_crypt was reinzuschreiben, z.B.: str_crypt=""

Gruß
cesupa


----------



## DrSoong (21. März 2007)

Im Normalfall ist es egal, ob du vorher was reinschreibst oder nicht, da sollte kein Fehler auftreten (auch bei mir hat es unter VB6 funktioniert). Kann es sein, dass du mit VB.NET arbeitest? Die .NET-Sprachen haben sich gegenüber den alten Sprachen doch etwas verändert, Fragen zu .NET stellst du am besten im .NET-Unterforum.


Der Doc!


----------



## Golox (22. März 2007)

Danke für die Antworten =)
Ich hab der Variable jetzt, wie cesupa vorgeschlagen hat, einfach nen leeren Wert zugewiesen (str_crypt = "") und es klappt =) 
Zu DrSoong: Ich arbeite nicht mit VB.Net aber trotzdem Danke.


----------



## get_banned (6. April 2010)

Ich grabe jetzt mal dieses alte Thema aus, da ich genau das gleiche machen muss. Leider habe ich nicht viel Ahnung von Vb. Deshalb habe ich jetzt einfach diesen Code kopiert, die Steuerelemente richtig benannt und das angesprochene Problem durch das Zuweisen eines leeren Werts gelöst. Wenn ich aber das Programm jetzt ausprobieren will und eben in den Textboxen etwas eingebe und eben etwas verschlüsseln möchte passiert einfach garnichts. Mir ist klar das ich warscheinlich etwas ganz grundlegendes falsch mache =(. Hier mein Code

Public Class Form1

    Private Sub cmdverschlüsseln_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
        verschiebung = txtverschiebung.text
        For i = 1 To Len(str)
            str_crypt = ""
            str_crypt = str_crypt & Chr(Asc(Mid(str, i, 1)) + verschiebung)
        Next i
        str_crypt = ""
        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 = str & Chr(Asc(Mid(str_crypt, i, 1)) - verschiebung)
        Next i
        str = ""
        decode = str

    End Function
End Class

Ich habe Vb 2008 Express Edition. Hat jmd vllt sogar ein Tutorial für eine Cäsar-Verschlüsselung? Das wäre natürlich noch viel besser...


----------



## XanRaZoR (10. April 2010)

get_banned hat gesagt.:


> Ich habe Vb 2008 Express Edition. Hat jmd vllt sogar ein Tutorial für eine Cäsar-Verschlüsselung? Das wäre natürlich noch viel besser...



VB 2008 --> siehe Beitrag von DrSoong.


----------

