Tal parece que tenemos oxidados los conocimientos más básicos del lenguaje, JXJ. IMPERDONABLE,
Parámetros por valor:
Código Delphi
[-]function Foo(Param: TDato): TOtroDato;
procedure Foo(Param: TDato);
Modo de uso:
Código Delphi
[-]algo2 := Foo(algo1);
Foo(algo3);
Parámetros por referencia:
Código Delphi
[-]Function Foo(var Param: TDato): TOtroDato;
procedure Foo(var Param: TDato);
Modo de uso:
Código Delphi
[-]
algo2 := Foo(algo1);
Foo(algo3);
Parámetros opcionales o por defectos:
Código Delphi
[-]
function Foo(Param1: TDato; var Param2: TDato = VALOR_DEFECTO): TOtroDato;
procedure Foo(Param1: TDato; var Param2: TDato = VALOR_DEFECTO);
Modo de uso:
Código Delphi
[-]
algo := Foo(algo1);
algo := Foo(algo1, algo2);
Foo(algo3);
Foo(algo3, algo4);
La posibilidad de sobrecargar como comenta roman si bien puede resultar válida si lo vemos desde la unidad cliente, no es estrictamente hablando un caso de parámetros opcionales. En realidad son funciones sobrecargadas con diferente cantidad de parámetros; que no opcionales o por defecto.
Saludos,