[fpc-devel] Abs(Variant) unexpected result

Bart bartjunk64 at gmail.com
Sun Feb 25 22:43:33 CET 2018

On Sun, Feb 25, 2018 at 5:34 PM, Michael Van Canneyt
<michael at freepascal.org> wrote:

>> So, would it be possible to have an overloaded Abs(V: Variant):
>> Variant; function in the variants unit?
> I advise against it.
> S : String;
> begin
>   S:='My very nice string';
>   S:=Abs(S);
> end;
> Will then compile and give a run-time error, as opposed to a compile-time
> error now.

Suggestion from the forum:
function Abs(var V: Variant): Variant; overload;
begin                                        ;
  If (VarIsNumeric(V)) then
    if V< 0 then
      Result := -V
      Result := V
   Raise EVariantBadVarTypeError.Create(SomeMessage);

While this will give hints if you did not initialize V, it will not
let you compile Abs(AString).


More information about the fpc-devel mailing list