uses Variants;
procedure foo(me: Variant);
begin
  case VarType(me) of
    varDouble: WriteLn('I am floating cockerel ', me);
    varShortInt: WriteLn('Je suis integer ', me);
    varString: WriteLn('Soy string ', me);
  else
    Writeln('Kakoi bagor )))')
  end
end;

function Kukareku(what: Integer): Variant;
begin
    case what of
    0: Kukareku := 42;
    1: Kukareku := 3.14;
    2: Kukareku := 'stroka';
    end;
end;


begin
    foo(Kukareku(0));
    foo(Kukareku(1));
    foo(Kukareku(2));

    foo(42);
    foo(3.14);
    foo('stroka')
end.
