Array
(
)

Funcoes c/ Mesmo Nome

Ricardoif
   - 14 set 2004

Estou tentando escrever duas funcoes com nomes iguais, onde o que vai mudar é o tipo de variável dos parâmetros, mas o resultado é o mesmo.
As duas são chamadas da seguinte forma:

n:=3;
x:=zer(n,5);


*****
function zer(v: integer; z: integer=2): string;
var
s: string;
begin
FmtStr(s, ´¬.´+IntToStr(z)+´d´, [v]);
result:=s;
end;


*****
function zer(v: string; z: integer=2): string;
var
s: string;
begin
FmtStr(s, ´¬.´+IntToStr(z)+´d´, [StrToInt(v)]);
result:=s;
end;


agradeço a todos


Gandalf.nho
   - 14 set 2004

Você deve usar a diretiva overload após a declaração de cada função.


Rômulo Barros
   - 14 set 2004


Citação:
Você deve usar a diretiva overload após a declaração de cada função.


Concluindo:

#Código

function zer(v: integer; z: integer=2): string; Overload;
var
s: string;
begin
FmtStr(s, ´¬.´+IntToStr(z)+´d´, [v]);
result:=s;
end;



*****
#Código
function zer(v: string; z: integer=2): string; Overload;
var
s: string;
begin
FmtStr(s, ´¬.´+IntToStr(z)+´d´, [StrToInt(v)]);
result:=s;
end;


Dependendo do tipo de parâmetro a ser passado.. o delphi saberá qual das duas functions chamará.
:lol: :lol: :lol:


Marcelo Saviski
   - 14 set 2004

Só mais um detalhezinho.

Isso:
FmtStr(s, ´¬.´+IntToStr(z)+´d´, [v]);
é igual a isso:
FmtStr(s, ´¬.[size=14:cf5bcae060]*[/size:cf5bcae060]d´, [v, z]);


Ricardoif
   - 15 set 2004

Obrigado a ajuda de todos!!!!!