Todo esto que pones lo hace delphi perfectamente. Y no es lo mismo Null (lo que tú haces) a un variant vacío.
Esta es la función Null delphi:
Código Delphi
[-]
function Null: Variant;
begin
_VarNull(TVarData(Result));
end;
procedure _VarNull(var V: TVarData);
begin
_VarClear(V);
V.VType := varNull;
end;
que, como ves, cambia el tipo de variant.
Bye