Las funciones y procedimientos son una parte importante en Delphi y desde Delphi 4, se nos permite trabajar con sobrecarga de métodos. Esto es, funciones y procedimientos que admiten parámetros predeterminados (haciendo que los parámetros sean opcionales), y lo mejor de todo es que permite que dos o más rutinas posean un mismo nombre pero funcionen como rutinas completamente diferentes. A esto se le llama Method Overloading.
Overloading
Para ser corto, la sobrecarga de métodos u Overloading es declarar más de una rutina con un mismo nombre, pero con la diferencia de poseer diferentes números de parámetros y tipos.
Ejemplo de Overloading:
{ Los métodos sobrecargados deben declararse con la directiva overload }
function SumaToStr(A, B :integer): string; overload;
begin
Result := IntToStr(A + B) ;
end;
function SumaToStr(A, B : extended; Decimales:integer): string; overload;
begin
Result := FloatToStrF(A + B, ffFixed, 18, Decimales) ;
end;
function SumaToStr(A: integer; B : extended; Decimales:integer): string; overload;
begin
Result := FloatToStrF(A + B, ffFixed, 18, Decimales) ;
end;
Estas declaraciones crean funciones con el mismo nombre pero con diferente tipos y números de parámetros, según los parámetros que pasemos, Delphi elegirá la implementación correcta.
Ahora, ¿Qué pasa si enviamos un número o tipo de parámetros de los cuales no se encuentra la implementación? Por ejemplo si llamamos a la siguiente función:
vResultado := SumaToStr(10.12, 2.45);
En este caso, obtendremos un error, ya que no existe una implementación para estos tipos de parámetros, el error sería el siguiente:
"there is no overloaded version of 'SumaToStr' that can be called with these arguments."