Functions

uses System.SysUtils, System.Variants;

//a Variant parameter takes a value
//of any type
function GetSum(const A, B: Variant): Variant;
begin
  if VarIsNumeric(A) and VarIsNumeric(B) then
    Result := A + B
  else
    Result := VarToStr(A) + VarToStr(B);
end;

var
  IntSum, StrSum, IntStrSum: Variant;
begin
  IntSum := GetSum(56);
  //IntSum is 11

  StrSum := GetSum('A''BC');
  //StrSum is 'ABC'

  IntStrSum := GetSum(5'6');
  //IntStrSum is '56'

  WriteLn('intSum is 'VarToStr(IntSum));
  WriteLn('strSum is ''',
    VarToStr(StrSum), '''');
  WriteLn('intStrSum is ''',
    VarToStr(IntStrSum), '''');
end.