Skip to content

Commit

Permalink
* a few more simple handlers get custom variant intercepts. Also part…
Browse files Browse the repository at this point in the history
… of #39815
  • Loading branch information
marcoonthegit committed Aug 21, 2022
1 parent 3eb800f commit 83b4555
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion packages/rtl-objpas/src/inc/variants.pp
Original file line number Diff line number Diff line change
Expand Up @@ -696,12 +696,20 @@ function sysvartoreal (const v : Variant) : Extended;


function sysvartocurr (const v : Variant) : Currency;
var Handler: TCustomVariantType;
dest: TVarData;
begin
if VarType(v) = varNull then
if NullStrictConvert then
VarCastError(varNull, varCurrency)
else
Result := 0
else if FindCustomVariantType(TVarData(v).vType, Handler) then
begin
VariantInit(dest);
Handler.CastTo(dest, TVarData(v), varCurrency);
Result := dest.vcurrency;
end
else
Result := VariantToCurrency(TVarData(V));
end;
Expand Down Expand Up @@ -745,12 +753,20 @@ procedure sysvartopstr (var s; const v : Variant);


procedure sysvartowstr (var s : WideString; const v : Variant);
var Handler: TCustomVariantType;
dest: TVarData;
begin
if VarType(v) = varNull then
if NullStrictConvert then
VarCastError(varNull, varOleStr)
else
s := NullAsStringValue
else if FindCustomVariantType(TVarData(v).vType, Handler) then
begin
VariantInit(dest);
Handler.CastTo(dest, TVarData(v), varOleStr);
s:= dest.volestr;
end
else
S := VariantToWideString(TVarData(V));
end;
Expand Down Expand Up @@ -817,13 +833,21 @@ procedure sysvartodisp (var Disp : IDispatch; const v : Variant);

{$ifndef FPUNONE}
function sysvartotdatetime (const v : Variant) : TDateTime;
var Handler: TCustomVariantType;
dest: TVarData;
begin
if VarType(v) = varNull then
if NullStrictConvert then
VarCastError(varNull, varDate)
else
Result := 0
else
else if FindCustomVariantType(TVarData(v).vType, Handler) then
begin
VariantInit(dest);
Handler.CastTo(dest, TVarData(v), vardate);
Result := dest.vdate;
end
else
Result:=VariantToDate(TVarData(v));
end;
{$endif}
Expand Down

0 comments on commit 83b4555

Please sign in to comment.