Tutorial
Stringmanipulationen
von Mao | Seite 5 von 5 |
Chr und Asc
Vielleicht hast Du schon von den so genannten ASCII-Codes gehört. ASCII ist ein Standardzeichensatz, quasi eine Tabelle, die festschreibt, welche Zahl welchen Buchstaben bzw. welches Zeichen zu repräsentieren hat. Die ASCII-Codes gehen von 0 bis 255, jedoch sind die Zeichen 0-32 Steuerzeichen. Wenn du mehr zu ASCII-Codes wissen willst, dann findest du bei Wikipedia eine ausführliche Seite dazu oder du schaust hier nach.
Oftmals will man ein Programm durch ESC abbrechbar machen. Das ist nicht sehr schwer, wenn man diese beiden Funktionen kennt.
Chr nimmt eine Zahl und gibt einen String, der aus einem Zeichen besteht, zurück. Und dieser 1-Zeichen-String ist das ASCII-Zeichen das zum übergebenen ASCII-Code gehört. So gehört zum Beispiel die Nummer 65 fest zum großen A.
Print Chr(65)
Und man wird ein A zu sehen bekommen. Das Ganze ist natürlich alles andere als elegant, geschweige denn effektiv. Aber die ASCII-Tabelle beinhaltet ja nicht nur Buchstaben. In ihr befinden sich auch ASCII-Codes, mit denen man zum Beispiel Boxen zeichnen kann. Mit doppeltem Rand, mit einfachem Rand, mit beiden Sorten von Rand und vielen mehr Kombinationsmöglichkeiten. Vielleicht kennst du das ja noch von DOS-Programmen. Aber auch andere Zeichen, wie das Symbol für den Durchmesser oder Pfeile lassen sich damit „zeichnen“, oder eher ausgeben.
Das Gegenteil von Chr ist Asc. Es liefert den ASCII-Code eines Zeichens zurück. Dazu gibt man das Zeichen als Funktionsparameter von Asc an.
Print Asc("A")
Wie wir von dem Beispiel ein Stück weiter oben wissen, ist die Ausgabe hier 65.
Im Folgenden ein Beispiel für eine einfache Verschlüsselung unter Verwendung der Stringmanipulations-Befehle Len, Mid, Asc und Chr.
Dim i As Integer
Dim As String s1, s2
Input "Zu verschlüsselnder Text:", s1
If Len(s1)>0 Then
For i=1 To Len(s1)
s2=s2+Chr(Asc(Mid(s1, i, 1)) Xor 23)
Next i
End If
Die Zeile, die am Kompliziertesten aussieht, ist genau die, die hier die Verschlüsselungsarbeit übernimmt. Eine gute Strategie, solche verschachtelten Ausrücke zu lesen, ist sie von der tiefsten Ebene aus nach außen hin zu interpretieren. In diesem Falle also:
1. Den nächsten Buchstaben heraussuchen
2. Von ihm den ASCII-Code ermitteln und diesen mit 23 XOR-verknüpfen
3. Diesen Integer wieder in ein Zeichen zurückverwandeln und an s2 anhängen
Der String s2 kann dann bequem in eine Datei geschrieben werden, was aber nicht Gegenstand dieses Tutorials ist.
Anzumerken sei hier noch, dass diese einfache XOR-Verschlüsselung, oder korrekt OneTimePad (OTP), wie sie richtig heißt, zwar theoretisch nicht zu knacken ist, man aber, wenn der Schlüssel (wie hier 23) im Programm steht, als Cracker leichtes Spiel hat. Es gibt viele, bessere Möglichkeiten etwas zu verschlüsseln, trotzdem dürfte diese Methode für ein Spiel wahrscheinlich ausreichend sein.
Schlusswort
Und damit sind wir auch "schon" am Ende mit unserem Exkurs über die Stringmanipulation – wie du hoffentlich erfahren hast, ein interessantes Thema, das Dir in den meisten Deiner Programme in irgendeiner Art und Weise begegnen wird.
Noch ein fröhliches Manipulieren,
Mao
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|