mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-20 19:18:37 +02:00
variants, varutils: another portion of misc fixes:
* Handle Variant to ShortString conversions entirely in variants unit, removed VarUtils.VariantToShortString + support varUString in DoVarClearComplex * fixed missing result assignment in TCustomVariantType.VarDataIsEmptyParam * TCustomVariantType.UnaryOp and BinaryOp now 'implemented', they raise EVariantInvalidOp git-svn-id: trunk@16529 -
This commit is contained in:
parent
ae028b1e1d
commit
ae7018cf85
@ -707,14 +707,11 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure sysvartopstr (var s; const v : Variant);
|
procedure sysvartopstr (var s; const v : Variant);
|
||||||
|
var
|
||||||
|
tmp: AnsiString;
|
||||||
begin
|
begin
|
||||||
if VarType(v) = varNull then
|
sysvartolstr(tmp, v);
|
||||||
if NullStrictConvert then
|
ShortString(s) := tmp;
|
||||||
VarCastError(varNull, varString)
|
|
||||||
else
|
|
||||||
ShortString(s) := NullAsStringValue
|
|
||||||
else
|
|
||||||
ShortString(s) := VariantToShortString(TVarData(V));
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2132,10 +2129,17 @@ begin
|
|||||||
with v do
|
with v do
|
||||||
if vType < varInt64 then
|
if vType < varInt64 then
|
||||||
VarResultCheck(VariantClear(v))
|
VarResultCheck(VariantClear(v))
|
||||||
else if vType = varString then begin
|
else if vType = varString then
|
||||||
|
begin
|
||||||
AnsiString(vString) := '';
|
AnsiString(vString) := '';
|
||||||
vType := varEmpty
|
vType := varEmpty;
|
||||||
end else if vType = varAny then
|
end
|
||||||
|
else if vType = varUString then
|
||||||
|
begin
|
||||||
|
UnicodeString(vString) := '';
|
||||||
|
vType := varEmpty;
|
||||||
|
end
|
||||||
|
else if vType = varAny then
|
||||||
ClearAnyProc(v)
|
ClearAnyProc(v)
|
||||||
else if vType and varArray <> 0 then
|
else if vType and varArray <> 0 then
|
||||||
DoVarClearArray(v)
|
DoVarClearArray(v)
|
||||||
@ -3668,7 +3672,7 @@ function TCustomVariantType._Release: Integer; {$IFNDEF WINDOWS}cdecl{$ELSE}stdc
|
|||||||
{$warnings off}
|
{$warnings off}
|
||||||
procedure TCustomVariantType.SimplisticClear(var V: TVarData);
|
procedure TCustomVariantType.SimplisticClear(var V: TVarData);
|
||||||
begin
|
begin
|
||||||
NotSupported('TCustomVariantType.SimplisticClear');
|
VarDataInit(V);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -3811,7 +3815,7 @@ end;
|
|||||||
function TCustomVariantType.VarDataIsEmptyParam(const V: TVarData): Boolean;
|
function TCustomVariantType.VarDataIsEmptyParam(const V: TVarData): Boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
VarIsEmptyParam(Variant(V));
|
Result:=VarIsEmptyParam(Variant(V));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -3955,14 +3959,14 @@ end;
|
|||||||
procedure TCustomVariantType.BinaryOp(var Left: TVarData; const Right: TVarData; const Operation: TVarOp);
|
procedure TCustomVariantType.BinaryOp(var Left: TVarData; const Right: TVarData; const Operation: TVarOp);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
NotSupported('TCustomVariantType.BinaryOp');
|
RaiseInvalidOp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TCustomVariantType.UnaryOp(var Right: TVarData; const Operation: TVarOp);
|
procedure TCustomVariantType.UnaryOp(var Right: TVarData; const Operation: TVarOp);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
NotSupported('TCustomVariantType.UnaryOp');
|
RaiseInvalidOp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1422,11 +1422,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
Function VariantToShortString(const VargSrc : TVarData) : ShortString;
|
|
||||||
begin
|
|
||||||
Result:=VariantToAnsiString(VargSrc);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
Some debug routines
|
Some debug routines
|
||||||
---------------------------------------------------------------------}
|
---------------------------------------------------------------------}
|
||||||
|
@ -71,7 +71,6 @@ function VariantToInt64(const VargSrc : TVarData ) : Int64;
|
|||||||
function VariantToQWord(const VargSrc : TVarData ) : Qword;
|
function VariantToQWord(const VargSrc : TVarData ) : Qword;
|
||||||
function VariantToWideString(const VargSrc : TVarData) : WideString;
|
function VariantToWideString(const VargSrc : TVarData) : WideString;
|
||||||
function VariantToAnsiString(const VargSrc : TVarData) : AnsiString;
|
function VariantToAnsiString(const VargSrc : TVarData) : AnsiString;
|
||||||
function VariantToShortString(const VargSrc : TVarData) : ShortString;
|
|
||||||
|
|
||||||
{Debug routines }
|
{Debug routines }
|
||||||
procedure DumpVariant(const VSrc : Variant);
|
procedure DumpVariant(const VSrc : Variant);
|
||||||
|
Loading…
Reference in New Issue
Block a user