Ver Mensaje Individual
  #7  
Antiguo 25-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El compilador no sabe a que metodo se supone que debe invocar. Variant puede ser cualquier tipo (esa es su ventaja) entre sus contras es que hay que andar haciendo conversiones, chequeos de tipo, consumen mas memoria y son mas lentos.

Imaginate este caso:

Código Delphi [-]
  procedure MostrarMensaje(const Msg: string); overload;
  procedure MostrarMensaje(const Numero: Integer); overload;


// mas adelante..
var
  Valor: Variant;
begin
  Valor := 5;
  MostrarMensaje(Valor); E2251 Ambiguous overloaded call to MostrarMensaje
end;

La solucion: explicitamente indicar el tipo, por ejemplo usando http://docwiki.embarcadero.com/Libraries/en/System.Variants.VarToStr

Código Delphi [-]
var
  Valor: Variant;
begin
  Valor := 5;
  MostrarMensaje(VarToStr(Valor)); invoca a procedure MostrarMensaje(const Msg: string);
end;
Responder Con Cita