Je nach Anwendungsfall könnte auch eine Universallösung sinnvoll sein:
Dann könnte man noch einwenig Platz sparen durch einen varianten Record
Delphi-Quellcode:
type
TNullableValue = Record
IsNull: Boolean;
case Integer of
0: (ValueBool: Boolean;);
1: (ValueInt: Integer;);
2: (ValueString: String;);
{ usw. }
end;