Je nach Anwendungsfall könnte auch eine Universallösung sinnvoll sein:
Delphi-Quellcode:
type
TNullableValue = record
IsNull: Boolean;
ValueBool: Boolean;
ValueInt: Integer;
ValueString: string;
{ usw. }
end;
Das nennt sich Variant, bzw. es ist der kleine Bruder davon
(oder Schwester oder Geschlechtsunentschiedener)
@Whookie: Nein, "höhere" Typen dürfen/können nicht in variante Teiles des Records rein.
Delphi-Quellcode:
type
TNullableValue = Record
case ValueType: {Integer}TEinEnumMitDenNamenDerTypenUndNullIstAuchEinTyp of
0: (ValueBool: Boolean);
1: (ValueInt: Integer);
2: (ValueString: PChar);
{ usw. }
666: ({IsNull: Boolean = True});
end;