Abschliesend noch weitere Hinweise zu varianten Stukturen.
Nemen wir folgende Deklarationen:
Delphi-Quellcode:
type
TFoo = (fooInt, fooPtr);
Delphi-Quellcode:
type
TBar = record
Foo: TFoo;
case Integer of
0: (Int: Integer);
1: (Ptr: Pointer);
end;
Foo ist also eine Aufzählung welche angibt, ob in dem direkt folgenden varianten Teil in Integer oder ein Pointer steht.
Da TFoo ein Aufzählungstyp ist (und im semantischen Zusammenhang mit dem varianten Teil) steht, können wir TFoo auch als Aufzählungstyp für den varianten Teil benutzen:
Delphi-Quellcode:
type
TBar = record
Foo: TFoo;
case TFoo of
fooInt: (Int: Integer);
fooPtr: (Ptr: Pointer);
end;
Da Foo direkt vor dem varianten Teil steht, können wir noch einen Schritt weiter gehen:
Delphi-Quellcode:
type
TBar = record
case Foo: TFoo of
fooInt: (Int: Integer);
fooPtr: (Ptr: Pointer);
end;
Foo wird also gleichzeitig deklariert und als Aufzählungstyp für den varianten Teil verwendet.
Diese Art der Deklaration dokumentiert die Bedeutung von Foo und des varianten Teils besser als die ursprüngliche Variante.