CENTRE (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
CENTRE (TSB)
Syntax: CENTRE <string> / <strvar>
[ , <breite> ]
Parameter
string: beliebige Zeichenkette
strvar: beliebige Stringvariable
breite: Wert von 0 bis 255
Einordnung
Typ: Anweisung
Kontext: Bildschirmkontrolle
Aufgabe: zentrierte Ausgabe eines Strings
Abkürzung: cE
Token: $64 $23 (100 35)
Verwandte Befehle
AT - LIN - POS - TAB - SPC


Dieser Artikel beschreibt das TSB-Schlüsselwort CENTRE (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls CENTRE.

Typ: Anweisung
Syntax: CENTRE <string> | <strvar> [ , <breite> ]

CENTRE gibt Strings oder String-Variablen zentriert auf dem Bildschirm aus.

Die Ausgabe erfolgt auf der Bildschirmzeile, auf der der Cursor sich gerade befindet, und bezieht sich ohne den Parameter <breite> auf die volle Zeilenbreite von 40 Zeichen. Wenn der Cursor nicht an Spalte 0, sondern irgendwo innerhalb der Bildschirmzeile positioniert ist, wird die Restbreite ( 40 minus POS(0) ) als Zentrierungsgrundlage verwendet.

Der optionale Parameter <breite> legt fest, welcher Wert als Grundlage für die Zentrierung gelten soll. Die Einrückung wird also bezüglich dieser Angabe vorgenommen ( (<breite> minus LEN(<string>)) durch 2 ).

Ist das Ergebnis der internen Einrückungsberechnung 0 oder kleiner als LEN(<string>) plus 2, wird nicht eingerückt. Der Wert <breite> kann größer sein als 40 (maximal 255), wobei ab einem Berechnungsergebnis von 128 plus LEN(<string>) (ergibt intern einen negativen Bytewert) keine Einrückung mehr erfolgt. Ist der erste Parameter kein Ausdruck vom Typ String, kommt es zur Fehlermeldung ?TYPE MISMATCH ERROR. Fehlt der erste Parameter oder sind mehr als zwei angegeben, führt das zum Abbruch mit ?SYNTAX ERROR. Ist der zweite Parameter kleiner als 0 oder größer als 255, gibt es einen ?ILLEGAL QUANTITY ERROR.

Beispiel[Bearbeiten | Quelltext bearbeiten]

10 DIV: CENTRE "demo"
20 PRINT AT(0,2) DUP("{shift-*}",40)
30 PRINT AT(0,4) "stop by C=" AT(0,5) "slow down by CTRL" AT(0,6) "break by STOP"
40 PRINT AT(0,8) DUP("{shift-*}", 40)
50 FOR i=1 to 5: PRINT AT(4,10+i)"{shift--}" AT(14,10+i)"{shift--}" AT(24,10+i)"{shift--}" AT(34,10+i)"{shift--}"
60 NEXT
70 FOR i=0 to 2: PRINT AT(5+i*10,11)"";
80 CENTRE "Nr."+str$(i+1),9
90 NEXT: PRINT AT(0,20)"";

Gibt eine zentrierte Gesamtüberschrift (Zeile 10), ein paar Infozeilen (Zeilen 20 bis 40) und eine (leere) Tabelle (Zeilen 50 und 60) mit zentrierten Überschriften aus (speziell in Zeile 80):

beispiel-wiki-centre.png