Konstanten
----------

Konstanten werden wie Integer-Variablen als vorzeichen-
behaftete 24-Bit-Zahlen gespeichert. Ihr Wertebereich reicht
von -8388608 bis +8388607. Die Werte koennen in dezimaler
oder hexadezimaler Form angegeben werden.

G-Pascal untertuetzt String-Konstanten mit ein bis drei
Zeichen. Dafuer wird der 24-Bit-Bereich eines Integerwerts in
drei Bytes aufgeteilt, die Platz fuer je ein Zeichen bieten.
Hat die String-Konstante weniger als drei Zeichen, werden
die oberen Bytes auf null gesetzt. Das erste Zeichen wird im
niedrigsten Byte, das zweite Zeichen im mittleren Byte und
das dritte Zeichen im hoechsten Byte gespeichert. Ein String
"abc" wird mit

"a" or "b" shl 8 or "c" shl 16

in einen 24-Bit-Integerwert umgewandelt (shl steht fuer
bitweises Verschieben nach links). Die folgende Tabelle
zeigt die hexadezimalen Werte fuer die Strings "c", "ab" und
"abc":

String | 24-Bit-Wert
-------+------------
"a"    | $000041
"ab"   | $004241
"abc"  | $434241

Um wieder an die einzelnen Zeichen zu gelangen, zerlegt man
den 24-Bit-Integerwert mit shr (bitweises Verschieben nach
rechts) in seine Bestandteile:

const
 c = "abc"
var
 c1, c2, c3: char;

begin
 c1 := c and 255;
 c2 := c shr 8 and 255;
 c3 := c shr 16 and 255;
 writeln(chr(c1), chr(c2), chr(c3));
end.

Die Verwendung dieser bis zu drei Zeichen langen Strings ist
eine Alternative zu Variablen vom Typ ARRAY[3] OF CHAR. Der
Programmautor nennt als Beispiel Adventure-Spiele, bei denen
viel mit kurzen Woertern gearbeitet wird.