diff --git a/rtl/inc/variants.pp b/rtl/inc/variants.pp index 65533b18b5..e3feae60a2 100644 --- a/rtl/inc/variants.pp +++ b/rtl/inc/variants.pp @@ -707,14 +707,11 @@ end; procedure sysvartopstr (var s; const v : Variant); +var + tmp: AnsiString; begin - if VarType(v) = varNull then - if NullStrictConvert then - VarCastError(varNull, varString) - else - ShortString(s) := NullAsStringValue - else - ShortString(s) := VariantToShortString(TVarData(V)); + sysvartolstr(tmp, v); + ShortString(s) := tmp; end; @@ -2132,10 +2129,17 @@ begin with v do if vType < varInt64 then VarResultCheck(VariantClear(v)) - else if vType = varString then begin - AnsiString(vString) := ''; - vType := varEmpty - end else if vType = varAny then + else if vType = varString then + begin + AnsiString(vString) := ''; + vType := varEmpty; + end + else if vType = varUString then + begin + UnicodeString(vString) := ''; + vType := varEmpty; + end + else if vType = varAny then ClearAnyProc(v) else if vType and varArray <> 0 then DoVarClearArray(v) @@ -3667,9 +3671,9 @@ function TCustomVariantType._Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdc {$warnings off} procedure TCustomVariantType.SimplisticClear(var V: TVarData); - begin - NotSupported('TCustomVariantType.SimplisticClear'); - end; +begin + VarDataInit(V); +end; procedure TCustomVariantType.SimplisticCopy(var Dest: TVarData; const Source: TVarData; const Indirect: Boolean = False); @@ -3811,7 +3815,7 @@ end; function TCustomVariantType.VarDataIsEmptyParam(const V: TVarData): Boolean; begin - VarIsEmptyParam(Variant(V)); + Result:=VarIsEmptyParam(Variant(V)); end; @@ -3955,14 +3959,14 @@ end; procedure TCustomVariantType.BinaryOp(var Left: TVarData; const Right: TVarData; const Operation: TVarOp); begin - NotSupported('TCustomVariantType.BinaryOp'); + RaiseInvalidOp; end; procedure TCustomVariantType.UnaryOp(var Right: TVarData; const Operation: TVarOp); begin - NotSupported('TCustomVariantType.UnaryOp'); + RaiseInvalidOp; end; diff --git a/rtl/objpas/cvarutil.inc b/rtl/objpas/cvarutil.inc index 64d9652905..7b3c78ecd1 100644 --- a/rtl/objpas/cvarutil.inc +++ b/rtl/objpas/cvarutil.inc @@ -1422,11 +1422,6 @@ begin end; -Function VariantToShortString(const VargSrc : TVarData) : ShortString; -begin - Result:=VariantToAnsiString(VargSrc); -end; - { --------------------------------------------------------------------- Some debug routines ---------------------------------------------------------------------} diff --git a/rtl/objpas/varutilh.inc b/rtl/objpas/varutilh.inc index ed68642e39..55e0bd94bc 100644 --- a/rtl/objpas/varutilh.inc +++ b/rtl/objpas/varutilh.inc @@ -71,7 +71,6 @@ function VariantToInt64(const VargSrc : TVarData ) : Int64; function VariantToQWord(const VargSrc : TVarData ) : Qword; function VariantToWideString(const VargSrc : TVarData) : WideString; function VariantToAnsiString(const VargSrc : TVarData) : AnsiString; -function VariantToShortString(const VargSrc : TVarData) : ShortString; {Debug routines } procedure DumpVariant(const VSrc : Variant);