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

Varianten-RECORDs

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.



Claudio Nieder 2000-11-12