vergiß aber nicht, daß bei Reinhard Kerns Lösung der Record selber freigegeben werden muß, wenn da etwas größeres drin enthalten ist, welches via Pointer referenziert ist und auch bei Objekten.
Delphi-Quellcode:
TIndex = Record
ValueType: (vtIntValue, vtStringValue);
IntValue: Integer;
StringValue: String;
Class Operator Implicit( Value: Integer): TIndex;
Class Operator Implicit(Const Value: String): TIndex;
Class Operator Implicit(Const Value: TIndex): Integer;
Class Operator Implicit(Const Value: TIndex): String;
End;
dieser Record ist z.B. 12 Byte groß,
regelt die Speicherfreigabe selber und man braucht keine Zuweisungsfunktionen aufrufen
Delphi-Quellcode:
Var X: TIndex;
i: Integer;
S: String;
X := i;
X := S;
S := X;
i := X;
praktisch wie Variant, nur etwas Schlanker.