Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: One more time: c Header samt Union in Delphi übersetzen

  Alt 21. Okt 2009, 14:55
Das "Integer" ist nicht wichtig. Du könntest auch Boolean nehmen und dann statt 0 und 1 True und False. Du brauchst nur einen ordinalen Typen und kannst mit dessen Werten dann die Möglichkeiten durchnummerieren.

Die Syntax stammt daher, dass es in Delphi auch "tagged unions" gibt:
Delphi-Quellcode:
TFoo = record
  case tag: Integer of
    0: (a: TA);
    1: (b: TB);
end;
Hier ist vorgesehen, dass TFoo.a gültig ist, wenn tag 0 ist, und TFoo.b, wenn tag 1 ist.
Delphi überprüft zur Laufzeit zwar nicht, ob auf die Teile des Records nur beim gültigen Tag zugegriffen wird, aber die Syntax ist im Sinne von selbstdokumentierendem Code recht interessant.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat