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