Nächste Seite: Über dieses Dokument ... Aufwärts: Unterschiede zu C-Schnittstellen Vorherige Seite: Variablen-Parameter

## Varianten-`RECORD`s

Unions in C und Varianten-`RECORD`s in dienen dem selben Zweck, sind aber nicht identisch. In beiden Fällen geht es darum, verschiedene Felder eines `RECORD`s 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:

- `example.second.b` in C
- `example.b` in

Allerdings können in die Varianten nur auf `RECORD`s angewendet werden, während in C auch einfache Variablen als `union` deklariert werden können.