Browse Source

--- Merging r16457 into '.':
U rtl/inc/variants.pp

# revisions: 16457
------------------------------------------------------------------------
r16457 | sergei | 2010-11-27 19:07:10 +0100 (Sat, 27 Nov 2010) | 2 lines
Changed paths:
M /trunk/rtl/inc/variants.pp

+ Support custom variants in VarIsClear
* TCustomVariantType.IsClear simply returns False (since its VType can never have values for standard variants)
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_4@16791 -

marco 14 years ago
parent
commit
222445f151
1 changed files with 8 additions and 11 deletions
  1. 8 11
      rtl/inc/variants.pp

+ 8 - 11
rtl/inc/variants.pp

@@ -2897,12 +2897,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
-          (((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;
 end;
 
 
 
 
@@ -3921,14 +3924,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:=(VT=varEmpty) or (((VT=varDispatch) or (VT=varUnknown))
-                            and (TVarData(V).vDispatch=Nil));
+  result:=False;
 end;
 end;