Tutorial
Die ASCII-Steuerzeichen in FreeBASIC
von ytwinky | Seite 1 von 1 |
Die Zeichen die FreeBASIC darstellen kann, haben Nummern von 0 bis 255. Unterschiede, die sich aus verschiedenen
Zeichensätzen ergeben, aber auch der Unterschied Text- und Grafikmodus sind hierbei erstmal nicht so wichtig.
(Auch die neuen Zeichen, die über WChr() zu Verfügung stehen, sind hier nicht das Thema..)
Die Zeichen des ASCII-Codes lassen sich in verschiedenen Tabellen nachsehen, u.a. in der Befehls-Referenz,
FB-Wiki u.a.m.(Eine schöne Tabelle ist diese hier, die Spalten Binär und Oct sind dabei nicht ganz so wichtig ^^ )
Natürlich kann ich versuchen, alle Zeichen auf dem Bildschirm auszugeben:
Dim As Integer Zeile, Spalte
For Zeile=0 To 255 Step 16
For Spalte=0 To 15
Print Chr(Zeile+Spalte) &" ";
Next Spalte
Print
Next Zeile
Sleep
End
..das sieht aber nicht unbedingt gut aus, außerdem piepst der Rechner auch zwischendurch(kein gutes Zeichen..)
Des Rätsels Lösung: Die Zeichen ab Nr. 32(Leerzeichen) lassen sich 'ohne Probleme' darstellen.
Un was ist mit den Zeichen 0..31?
Nun, in den verschiedenen ASCII-Tabellen haben diese Zeichen eine, meist englische, Beschreibung: 07 BEL (z.B.)
Const BEL=07 'Const deshalb, damit es nicht im Programm geändert werden kann,
'da es ja als Funktion im ganzen Programm benutzt werden soll
Print "Fertig.." & Chr(BEL)
zeigt, was passiert: es ertönt ein Piep(was dem Namen BEL->Bell=Glocke entspricht).
Beachte: Die Programmausführung wird erst am Ende des 'Pieps' fortgesetzt!
Dieses Zeichen führt also eine Funktion aus. Deshalb heißen die Zeichen aus diesem Bereich auch Steuerzeichen.
Nun ist diese Schreibweise etwas umständlich, einfacher wäre diese Variante:
Const BEL=Chr(07) 'Const deshalb, damit es nicht im Programm geändert werden kann,
'da es ja als Funktion benutzt wird
Print "Fertig.." & BEL
..aha, der Rechner gibt "Fertig" aus, gefolgt von einem Piep. Toll, soll also eine Meldung von einem Piep begleitet
werden, brauche ich nur &BEL an einen String anzuhängen und schon piepst es..
Seit FreeBASIC 0.17b gibt es aber noch eine weitere Möglichkeit:
Const BEL=!"\007" 'Const deshalb, damit es nicht im Programm geändert werden kann,
'da es ja als Funktion benutzt wird
Print "Fertig.." & BEL
Was ist denn das nun wieder?
Es ist nichts grundsätzlich Neues, in den früheren FB-Versionen gab es eine ähnliche Form der Darstellung auch
schon, nur mußte dazu am Programmanfang ein "Option Escape" stehen, dann wurden Strings, die mit einem "\"
begannen, als Steuerzeichen intepretiert.
Neu ist nun, daß "Option Escape" nicht mehr so ohne Weiteres unterstützt wird. Stattdessen wird so ein String mit '!'
eingeleitet und der Compiler 'weiß' dann, daß in dem String Steuerzeichen enthalten sind.
(Die Darstellung !"\007" ist hier übermäßig ausführlich, deutet aber an, daß die Zeichennummer maximal 3-stellig
sein kann und kann bei Bedarf auch !"\7" sein)
Was nützt das nun? Alle Zeichen können nun in einem String untergebracht werden und die Funktionen werden
ausgeführt, wenn der String mit einem "!" beginnt.
Allerdings unterstützt FreeBASIC nicht alle Funktionen, beachtet werden aber auf alle Fälle die Folgenden:
Nr Darstellung Beschreibung
0 \00 ist das Stringende(steht es zu Beginn wird der Rest also nicht ausgegeben..)
3 \03 ist das Zeichen für Abbruch, kann aber nicht abgefragt werden, da es sofort zum Programmabbruch führt
7 \07 gibt einen Piepston aus
8 \08 oder \b setzt den Cursor eine Position zurück, bleibt aber in derselben Zeile
9 \09 oder \t setzt den Cursor um eine Tablänge weiter
10 \10 oder \n setzt den Cursor eine Zeile tiefer
13 \13 oder \r setzt den Cursor an den Zeilenanfang
27 \27 hat keine Funktion für den Compiler, wird aber in Programmen oft benutzt,
um einen Abbruch(Escape) zu signalisieren(auf deutschen Tastaturen auch Ctrl-ü)
Wem also die Darstellung mit
Const CrLf=Chr(13) &Chr(10)
oder weil Chr() ja mehrere Zeichen 'kann':
Const CrLf=Chr(13,10)
zu umständlich ist, der kann mit
Const CrLf=!"\13\10"
dasselbe erreichen. Oder aber ganz professionell
Const CrLf=!"\r\n"
Fazit: Eine durchaus umfangreiche Ausgabemeldung, wie z.B. eine Hilfe-Seite läßt sich ohne Probleme in einer
Print-Anweisung unterbringen und kann mit den unterstützten Steuerzeichen auch prima gestaltet werden.
Beachte:Chr(0) kann nicht immer durch !"\000" ersetzt werden, siehe hier
Wie so oft, gilt auch hier: Zu Risiken und Nebenwirkungen sehen Sie in der FreeBASIC-Befehlsreferenz nach,
sonst fragen Sie im Chat #fb-portal/#freebasic.de oder im Forum..
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|