Der Begriff "Union" stammt aus der Programmiersprache C.
In Pascal leisten variante Records
vergleichbares.
Außerhalb des Pascal Standards gibt es weitere Möglichkeiten:
Absolute Variablen
Absolute Variablen sind spezifisch für Turbo Pascal und Delphi:
Ein absoluter Adreßwert wird angegeben durch
VAR var1 : typ1;
var2 : typ2 ABSOLUTE var2;
oder
VAR var3 : typ3 ABSOLUTE absoluter_adresswert;
Beispiel:
PROGRAM union;
CONST n = 10;
VAR s : STRING[n];
b : ARRAY[0..n] OF BYTE ABSOLUTE s;
r : RECORD
len : BYTE; { Anzahl belegter Zeichen }
str : PACKED ARRAY[1..n] OF CHAR; { Zeichen }
END ABSOLUTE s;
i : INTEGER;
BEGIN
s := 'abcdefghij';
Writeln(s);
FOR i:=0 TO n DO
Write(b[i]:4);
Writeln;
Writeln(r.len, ' ', r.str);
END.
Testergebnisse:
abcdefghij
10 97 98 99 100 101 102 103 104 105 106
10 abcdefghij
Beispiel 2:
VAR crt_mode: BYTE ABSOLUTE $0040:$0049;
Die Angabe eines absoluten Adreßwertes kommt im wesentlichen nur
für DOS in Frage, wo bestimmte Systeminformationen in stets
gleichbleibenden Adressbereichen abgelegt werden.
Im obigen Beispiel kann über die Variable crt_mode der
Bildschirmmodus abgefragt und manipuliert werden.
segment:offset
segment und offset sind 16-Bit-Werte, die meist in
Hexadezimaldarstellung angegeben werden.
P. Böhme, 31.08.1996