+ Support custom variants in VarIsClear

* TCustomVariantType.IsClear simply returns False (since its VType can never have values for standard variants)

git-svn-id: trunk@16457 -
This commit is contained in:
sergei 2010-11-27 18:07:10 +00:00
parent 7dd93b1282
commit 3b910d9eb2

View File

@ -2854,12 +2854,15 @@ function VarIsClear(const V: Variant): Boolean;
Var
VT : TVarType;
CustomType: TCustomVariantType;
begin
VT:=TVarData(V).vType and varTypeMask;
Result:=(VT=varEmpty) or
(((VT=varDispatch) or (VT=varUnknown))
and (TVarData(V).vDispatch=Nil));
if VT<CFirstUserType then
Result:=(VT=varEmpty) or
(((VT=varDispatch) or (VT=varUnknown))
and (TVarData(V).vDispatch=Nil))
else
Result:=FindCustomVariantType(VT,CustomType) and CustomType.IsClear(TVarData(V));
end;
@ -3878,14 +3881,8 @@ end;
function TCustomVariantType.IsClear(const V: TVarData): Boolean;
Var
VT : TVarType;
begin
VT:=V.vType and varTypeMask;
Result:=(VT=varEmpty) or (((VT=varDispatch) or (VT=varUnknown))
and (TVarData(V).vDispatch=Nil));
result:=False;
end;