Visual Basic Zeilenumbruch im Code?
Ich bin zur Zeit dabei ein Verschlüsselungsprogramm mit VB zu programmieren. Leider gibts hier ein Problem mit den Zeilenumbrüchen. Wenn man im Orginaltext in zwei Zeilen schreibt, dann wir der Zeilenumbruch als 'z' ausgelesen und dann mit dem Schlüsselwort verrechnet und ausgegeben. Das verfälscht die Verschlüsselung und wenn man es dann wieder entschlüsseln lässt. deshalb will ich den String dann irgendwie so machen:
If Eingabe = >Zeilenumbruch< then Ausgabe = >Zeilenumbruch<
oder: If Eingabe = >Zeilenumbruch< then Ausgabe = " "
Sodass der Zeilenumbruch erhalten bleibt oder ein Leerzeichen setzt, aber die Verschlüsselung nicht verfälscht. Ich weis nur nicht, wie ich diesen >Zeilenumbruch< - Teil im Code ausdrücken soll. ich hab schon sowas wie vbCr und vbCrLf versucht, aber hat nicht funktioniert und, dass man die Zeile in () dahinter schreibt, geht in diesem Fall auch nicht. Wisst ihr da vielleicht was?
Wichtig zu wissen wär, dass die Variable Eingabe eine Mid$ - Funktion ist von einem Text, der verschlüsselt werden soll von einer immer größer werdenden Stelle mit der Länge 1:
While Stelle < EingebenerText.length + 1
Eingabe = Mid$(Ein
Stelle = Stelle + 1
End While
1 Antwort
Ist Dein Ansatz überhaupt richtig? Du kannst doch nicht mit If-Then eine Verschlüsselung vornehmen.
Vielleicht hilft Dir folgender Ansatz:
Alle Zeichen in Deinem Text sind ASCII oder Unicode-Zeichen. Der ASCII Zeichensatz enthält Zeichen mit dem Code 0 bis 255, Unicode bis 65535. ASCII kannst Du für Editor-Texte verwenden, bei Word Unicode. Und vbCrLf besteht aus den beiden Codes 10 und 13 (Chr(10) und Chr(13))
Jetzt eine Vorschlag zu Deinem Verschlüsselungsprogram:
Du hast beispielsweise einen ASCII- Text und einen ASCII-Schlüssel.
Wenn Du die Codewerte der Zeichen einzeln addierst verschlüsselst Du und entschlüsselst indem Du später die Schlüsselcodes wieder subtrahierst.
Einziges Problem ist: Beim Addieren von zwei Werten kannst Du eine Zahl über 255 bekommen. Du musst also beim Verschlüsseln bei einem Wert über 255 diesen Grenzwert abziehen und beim Entschlüsseln bei Werten unter 0 die 255 wieder abziehen.
Hier ein Codebeispiel für das Codieren:
Function Codieren(ByVal Tx1 As String, ByVal Schlüssel As String) As String Dim m, n As Integer Dim Cd1 As Integer Dim Tx2 As String = "" n = 0 For m = 0 To Tx1.Length - 1 Cd1 = Asc(Tx1.Substring(m, 1)) + Asc(Schlüssel.Substring(n, 1)) If Cd1 > 255 Then Cd1 = Cd1 - 255 Tx2 = Tx2 & Chr(Cd1) If n = Schlüssel.Length - 1 Then n = 0 Next Return Tx2 End Function
Das Decodieren kannst Di sicher selbst programmieren.
Viel Spaß!
Horst
Das funktioniert schon. Ich hab zwei Mid$ - Funktionen mit sich erhöhender Stelle einmal auf den Eingabetext und einmal auf den Schlüssel laufen lassen. Beim Schlüssel eben noch so, dass, wenn die Stelle gleich der Länge des Schlüssels + 1 ist, sich wieder auf 1 zurücksetzt. Das Schlüsselwort soll hierbei individuell vom User ausgesucht werden.
Die beiden werte der Mid$ - Funktionen speichere ich ein einem String (ccc für Text, swd für Schlüssel). Mit den beiden subs az für ccc und bz für swd weise ich dann jeweils einem String - Wert einen Integer - Wert (abc bei az, acb für bz) zu (az: 1 - 26; bz: 0 - 25).
Diese beiden werde überlagere ich (bei der Entschlüsselung überlagere ich mit -acb) dann mit dem Integer cab und lass über die Verrechnungsmethode vr einen String zzz ausgeben.
Der Ausgabe - String aus aus setzt sich dann aus aus = aus + zzz zusammen.