Unions in C und Varianten-RECORDs in dienen dem selben Zweck, sind aber nicht identisch. In beiden Fällen geht es darum, verschiedene Felder eines RECORDs auf die gleiche Speicherstelle abzubilden. Wesentlicher Unterschied der beiden Methoden: in C umfasst ein union die verschiedenen Darstellungen eines einzelnes Feldes, während in mehrer Felder angegeben werden können.
struct example { LONG first; union { WORD a; BYTE b; char c; } second; };
Dies sieht in folgendermassen aus:
example = RECORD first: LONGINT; CASE :INTEGER OF | 0: a: CARDINAL; | 1: b: BYTE; | 2: c: CHAR; END END;
Daraus ergibt sich auch der Unterschied, dass man in C einen Namen für die union und einzelne Namen für die verschiedenen Varianten angibt. In ist dies nicht der Fall, so sind die beiden folgenden Zugriffe identisch:
Allerdings können in die Varianten nur auf RECORDs angewendet werden, während in C auch einfache Variablen als union deklariert werden können.