Einzelnen Beitrag anzeigen

NicoDE
(Gast)

n/a Beiträge
 
#10

Re: Delphi-Equivalent zur C-union

  Alt 22. Jun 2005, 10:53
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.
  Mit Zitat antworten Zitat