2.9 Textausgabe
2.9.3.2 Positionierung von Text 2.9.3.3 Ermitteln der Cursorposition
^2.9.1 ÜberblickPRINT ist die zentrale Anweisung, um Text oder Zahlen auf dem Bildschirm darzustellen. Die Möglichkeiten von PRINT sind sehr vielfältig. Hier finden Sie deshalb einen Überblick.Tabelle: Überblick über die PRINT Funktion <Ausgabeliste> enthält numerische Ausdrücke, String-Ausdrücke oder Steueranweisungen (INK, PAPER, SPC usw.), getrennt durch Komma (tabulierte Ausgabe) oder Semikolon (fortlaufende Ausgabe).
Tabelle: Befehle im Zusammenhang mit Textausgaben
^2.9.2 Der PRINT-BefehlPRINT ist die zentrale Anweisung, um Text oder Zahlen auf dem Bildschirm darzustellen.
Elemente der Ausgabeliste können sein:
|
PRINT "Hallo", "Welt" ' tabuliert PRINT "Hallo"; "Welt" ' hintereinander |
| Ausgabe: |
Hallo Welt HalloWelt |
|
Steht am Ende einer PRINT-Anweisung eines der Trennzeichen (Komma oder Semikolon), so bleibt der Cursor an der durch das Trennzeichen bestimmten Stelle. Steht kein Trennzeichen am Ende wird der Cursor nach der Ausgabe an den Anfang der nächsten Zeile gesetzt.
Beispiele: |
A = 100 : N = 17 PRINT A, 2*A, sqr(a); ' keine Zeileschaltung PRINT " Otto ist"; N; " Jahre alt" |
| Ausgabe: |
10020010 Otto ist 17 Jahre alt |
A$ = "Ottokar isst Wurst" PRINT A$;' keine Zeilenschaltung! PRINT Left$(A$, 7); Right$(A$, 6) |
| Ausgabe: |
Ottokar isst Wurst Ottokar Wurst |
PRINT AT(0,0); "Ganz links oben" ' Positionierung unabhängig
' vom eingestellten Fenster.
PRINT COLOR(BLACK, WHITE); " OK " ' Farbe nur für diese Ausgabe
|
|
Die Farb- und Positionierungsanweisungen innerhalb des Print-Befehls können beliebig miteinander kombiniert werden.
Beispiel: |
Print AT(2,2);Paper 0;"Hallo";AT (3,2);Ink 15;"Welt" |
|
Beachten Sie, dass in diesem Beispiel die Anweisung PAPER auch auf das Wort "Welt" wirkt. "Welt" erscheint also weiß (15) auf Schwarz (0).
PRINT positioniert den Text immer relativ zum aktuell (mit WINDOW) eingestellten Text-Fenster. Ausnahmen sind die Funktionen PRINT AT und PRINT ATXY. Sie beziehen sich immer auf das maximale Textfenster. Wurde kein WINDOW-Befehl ausgeführt, ist das maximale Fenster voreingestellt. Geht der mit Print ausgegebene Text über das Text-Fenster hinaus, so hängt die Reaktion vom eingestellten Modus (PAGE-Mode, SCROLL-Mode oder LAYOUT-Mode) ab. Im LAYOUT-Modus werden Fensterbegrenzungen ignoriert, der Text geht rechts und unten über das Fenster hinaus. Im PAGE- und SCROLL-Mode wird beim Überschreiten der rechten Fensterseite eine neue Zeile eröffnet. Das Überschreiten des unteren Fensterrandes führt im PAGE-Mode dazu, dass der Cursor nach links oben gesetzt wird. Im Scrollmodus wird der Fensterinhalt nach oben geschoben (Scrolling). Dieser Modus steht nur zur Verfügung, wenn der Screen ein BitmapContent-Objekt ist.
Per Default ist für BitmapContent-Objekte der Scroll-Modus voreingestellt. Für alle anderen Objekte ist der Layout-Modus voreingestellt.
2.9.3 Der Textbildschirm^2.9.3.1 Aufbau des TextbildschirmsDer Bildschirm gliedert sich für die Textausgabe in Zeilen und Spalten. Entsprechend der bei Computern üblichen Zählweise beginnen sowohl die Zeilennummern als auch die Spaltennummern bei Null.LOCATEDer Befehl PRINT beginnt seine Textausgabe an der aktuellen Cursorposition. Mit der Anweisung LOCATE können Sie diese Position verändern.Syntax: LOCATE zeile, spalte zeile: Zeilenposition für die nächste RPINT-Anweisung spalte: Spaltenposition für die nächste RPINT-Anweisung
Hinweise:
WINDOWDer Befehl WINDOW (Fenster) schränkt die Textausgabe auf einen bestimmten Bereich des Bildschirms ein. Die Einschränkung gilt nur für Textein- und ausgaben (PRINT, INPUT, CLS, LOCATE einschließlich der darauf wirkenden Farb-Befehle), nicht jedoch für Grafikbefehle.
Beispiel: Die Textausgabe wird auf die Zeilen 10 bis 15 innerhalb der Spalten 20 bis 30 eingeschränkt. |
WINDOW 10, 15, 20, 30 |
|
Der Befehl LOCATE bezieht sich immer auf das eingestellte Fenster.
Beispiel: |
WINDOW 2, 9, 4, 15 LOCATE 2, 4 PRINT "Hallo" |
|
2.9.3.2 Positionierung von TextDie tabWidth-SystemvariableWerden bei Print die Argumente mit einem Komma getrennt, erfolgt eine tabulierte Ausgabe. Die Systemvariable tabWidth bestimmt dabei die Position der Tabulatoren. Gültige Werte sind ganze Zahlen im Bereich von 1 bis 1024.tabWidth kann gelesen und geschrieben werden. Beispiel:Tabulator auslesen und neu setzen |
Print "Tabulator", "=", tabWidth ' Standardwert: 16 tabWidth = 23 Print "Tabulator", "=", tabWidth ' 23 erscheint tabWidth = tabWidth / 2 Print "Tabulator", "=", tabWidth ' 11 erscheint (ganzzahlig) |
Positionierung innerhalb von PrintInnerhalb einer PRINT-Anweisung kann man nicht nur Text ausgeben, sondern auch Positionierungsaufgaben wahrnehmen, damit die Ausgabe ordentlich aussieht. Dafür stehen die Funktionen SPC, TAB, AT und ATXY zur Verfügung.SPC und TABDie Funktion SPC (Spaces) erzeugt eine bestimmte Anzahl von Leerzeichen und gibt diese aus.Die Funktion TAB (Tabulator, Tabelle) positioniert den Cursor an der angegebenen Spalte in der Zeile, indem so viele Leerzeichen, wie dafür nötig sind, erzeugt und ausgegeben werden.
Beispiele: |
A = 3 PRINT "Alfa"; SPC(12);"Beta" ' 12 Leerzeichen PRINT "Alfa"; TAB(12);"Beta" ' an Position 12 PRINT A; TAB(8); A*A; TAB(24); A*A*A |
| Ausgabe |
Alfa Beta Alfa Beta 3 9 27 |
AT und ATXYDie Funktion AT ('at' heißt 'an') positioniert den Cursor an der angegebenen Stelle (Zeile, Spalte). Die Funktion ATXY positioniert den Cursor an der angegebenen Grafik-Position (x, y) in Pixeln. Damit ist eine Text-Positionierung unabhängig vom Zeichen-Raster aus Zeilen und Spalten möglich.Beide Funktionen beziehen sich NICHT auf das aktuelle Text-Window, sondern schreiben den Text bezüglich des maximalen Fensters.
Beispiele: |
PRINT AT(0,7); "****************" ' Ausgabe untereinander: PRINT AT(3,10); "A";AT(4,10); "B";AT(5,10); "C"; PRINT ATXY(0,300);"xyz" ' links, unten (!) |
Hinweise:
|
PRINT SPC 7, "sieben Leerzeichen" |
^2.9.3.3 Ermitteln der CursorpostionSie können in R-BASIC sowohl die aktuelle Cursor-Position ermitteln (CsrLin, POS) als auch das auf der Cursor-Position stehende Zeichen lesen (VGet$).CsrLinDie Funktion CsrLin (d.h. Cursor Line, Zeile des Cursors) liefert die Zeile, in der sich der Cursor gerade befindet. Der Parameter n bestimmt, worauf sich CrsLin beziehen soll.
Beispiel: |
WINDOW 5, 10, 8, 45 Color 7, 0: CLS Print CsrLin(1); CsrLin(0) Print "Das Fenster hat"; CsrLin(-1); "Zeilen" |
POSDie Funktion POS (d.h. Cursor Position, Spalte des Cursors) liefert die Spalte, in der sich der Cursor gerade befindet. Der Parameter n bestimmt, worauf sich POS beziehen soll.
Beispiel: |
WINDOW 5, 10, 8, 45 Color 7, 0: CLS Print Pos(1) Print Pos(0) Print "Das Fenster hat"; Pos(-1); "Spalten" |
|
Hinweis: Die Funktionen AT und ATXY aktivieren intern kurzzeitig das maximale Textfenster. Verwenden Sie CsrLin, POS und VGet$ deswegen nicht als Argumente einer PRINT-Anweisung, die auch AT oder ATXY enthält.
Fehlerhaft: |
Print AT (10, 9); POS(-1) |
| Korrekt: |
A = POS(-1) Print AT (10, 9); A |
VGet$Die Funktion VGet$ (d.h. Video Get - Hole von der Grafikkarte) liefert das Zeichen, das sich an der aktuellen Cursor-Position befindet.VGet$ ist ein Kompatibilitätsbefehl für ältere BASIC Programme, die für einen echten Textmodus geschrieben wurden. Syntax:C$ = VGet$ Anmerkung:
|
Dim a$ WINDOW Color 7, 0: CLS Print "Hallo BASIC" Locate 0, 7 a$ = VGet$ Print AT(2, 7); a$ |
Hinweis: Die Funktionen AT und ATXY aktivieren intern kurzzeitig das maximale Textfenster. VGet$ deswegen nicht als Argument einer PRINT-Anweisung, die auch AT oder ATXY enthält.
^2.9.4 Steuerzeichen: Scrollmode, Pagemode und LayoutmodeASCII-Codes im Bereich von Null bis 31 ist kein Buchstabe, sondern eine Steuerfunktion zugeordnet. Einige dieser Codes können von R-BASIC in der PRINT-Anweisung ausgewertet werden. Im Folgenden finden Sie eine Zusammenstellung der verfügbaren Steuerzeichen. Besondere Bedeutung kommt dabei dem PAGE-Mode, dem SCROLL-Mode und dem LAYOUT-Mode zu, da diese nur über die Steuerzeichen und PRINT eingestellt werden können.SCROLL-ModeAm Zeilenende wird in die nächste Zeile gewechselt. Wenn das untere Ende des Text-Fensters erreicht wird, schiebt R-BASIC den Fensterinhalt um eine Zeile nach oben. Am unteren Fensterrand entsteht eine Leerzeile. Der Scrollmode steht nur zur Verfügung, wenn der Screen ein BitmapContent-Objekt ist.PAGE-ModeAm Zeilenende wird in die nächste Zeile gewechselt. Wenn das untere Ende des Text-Fensters erreicht wird setzt R-BASIC den Cursor wieder nach links oben.LAYOUT-ModeEs gibt weder einen automatischen Zeilenumbruch noch eine Begrenzung auf das Textfenster. Der Cursor kann frei positioniert werden, auch mit negativen Koordinaten (links oder oberhalb des Textfensters). Texte können über das Fenster hinausragen (und damit auch unsichtbar werden).Chr$(code)Um ein Steuerzeichen auszugeben, verwenden Sie innerhalb einer Print-Anweisung die Stringfunktion Chr$() oder eine Backslash '\', gefolgt vom entsprechenden ASCII-Code.
Hinweise:
|
Include "KeyCodes" ! Groß-/Kleinschreibung beachten |
Tabelle: ASCII SteuercodesInKey$-Taste: Gedrückte Taste, damit InKey$ diesen Code zurückgibt.Bedeutung in Print: Funktion, die mit Print Chr$(code) ausgeführt wird.
2.9.5 Farben und SchriftenStandardmäßig verwendet Print die aktuelle Vorder- und Hintergrundfarbe, die mit einem der Befehle INK, PAPER oder COLOR eingestellt wurden. Sie können die Farben jedoch für eine einzelne Print-Anweisung ändern, indem Sie die Funktionen INK, PAPER oder COLOR innerhalb der Print-Anweisung angeben. Diese Farbwerte gelten dann nur für diese eine Print-Anweisung.INK, PAPER, COLOR
Hinweis: Um Texte oder Blockgrafik-Zeichen transparent auszugeben (d.h. der Hintergrund wird nicht gelöscht) verwenden Sie als Hintergrundfarbe die spezielle Konstante BG_TRANSPARENT (numerischer Wert: 4096). BG_TRANSPARENT kann sowohl innerhalb der Print-Anweisung als auch mit den BASIC-Befehlen PAPER und COLOR verwendet werden. Beispiel: |
PRINT AT (7, 12); COLOR (BLACK, WHITE); " ACHTUNG! " PRINT AT (7, 12); PAPER (BG_TRANSPARENT); " ACHTUNG! " |
Hinweise:
Verwendung von SchriftenPrint verwendet immer die aktuell eingestellte Schriftart und Schriftgröße. Die folgende Tabelle enthält die wesentlichen Befehle zum Einstellen von Schriftart und Schriftgröße. Eine ausführliche Beschreibung sowie weitere Befehle zur Verwaltung von Schriften finden Sie im Handbuch "Spezielle Themen", Kapitel 2 (Verwendung von Schriften) und Kapitel 4 (Verwendung des Block-Grafik-Modus). Der Block-Grafik-Modus erlaubt die Ausgabe von selbst erstellten Grafikzeichen mit dem Print-Befehl.
Printfont.style enthält Bitflags. Die Arbeit mit Bitflags ist im Kapitel 2.3.5.4 (Sonderfall: Bitflags) erläutert. Beispiele: |
'Setzen des Stils "unterstrichen", auch wenn er schon gesetzt ist printFont.style = printFont.style OR TS_UNDERLINE |
' Rücksetzen des Stils "kursiv", auch wenn er nicht gesetzt war printFont.style = printFont.style AND NOT TS_ITALIC |
^2.9.6 Formatierung von ZahlenWenn Sie mit dem Print-Befehl eine Zahl ausgeben gibt R-BASIC Vor- und Nachkommastellen aus oder wechselt in die Expotentialdarstellung, je nachdem in welchem Bereich die Zahl liegt.Zur Einstellung des Zahlenformats stehen in R-BASIC die folgenden Befehle und Variablen zur Verfügung. Sie sind ausführlich im Kapitel 1 des Handbuchs "Spezielle Themen" beschrieben. Wenn Sie zum Beispiel selbst festlegen wollen, wie viele Nachkommastellen ausgegeben werden, können Sie die Systemvariable numberFormat manuell ändern.
Für viele Zwecke reichen die R-BASIC Standard-Zahlenformate aus, so dass Sie sich meistens nicht mit der komplexen Belegung der numberFormat-Variable beschäftigen müssen. Im Folgenden finden Sie eine Kurzbeschreibung der Anweisung SetNumberFormat. Eine vollständige Beschreibung sowie weitere Syntaxvarianten finden Sie im Kapitel 1 des Handbuchs "Spezielle Themen".
SetNumberFormatStellt das Zahlenformat für die Anzeige von Zahlen ein.
Für 'format' stehen folgende Werte zur Verfügung:
Beispiele: |
SetNumberFormat ( NF_NORMAL ) SetNumberFormat ( NF_SCI_4 ) |
^ |