Olá galera, nesta Quick Tips irei falar sobre os s que implementamos em nossas functions e procedures, assim podemos obter mais seguranças na de s.
Valor x Referência
Valor: O conteúdo que foi passado para o método permanece intacto ao final do mesmo. O compilador gera uma cópia da variável.
Exemplo:
procedure TFrmPrincipal.ParamValor(Valor: Real; Qtd: Integer);
begin
Valor := Valor * Qtd;
end;
Usando o Método
procedure TFrmPrincipal.Button1Click(Sender: TObject);
Var
xValor : Real;
begin
xValor := 60;
ShowMessage(FloatToStr(xValor));
ParamValor(xValor, 2);
ShowMessage(FloatToStr(xValor));
end;
Referência: O conteúdo que foi passado para o método pode ser modificado. Temos um endereço em comum para a variável passada como e o próprio , ou seja, se mudar dentro do método o conteúdo da variável de fora será modificado.
Exemplo:
procedure TFrmPrincipal.ParamReferencia(var Valor: Real; Qtd: Integer);
begin
Valor := Valor * Qtd;
end;
Usando o método
procedure TFrmPrincipal.Button1Click(Sender: TObject);
Var
xValor : Real;
begin
xValor := 60;
ShowMessage(FloatToStr(xValor)); //Observe que irá aparecer a mensagem 60
ParamReferencia(xValor, 2);
ShowMessage(FloatToStr(xValor)); //Observe que irá aparecer a mensagem 120
end;
s Const
Não podemos atribuir nenhum valor, dentro do método, a variável passada como .
Exemplo:
procedure TFrmPrincipal.ParamConst(const Valor: Real; Qtd: Integer);
begin
//Errado: Não podemos atribuir valor a um Const;
Valor := (Valor * Qtd);
end;
Usando o Método
ParamConst(6000, 10);
Constantes tipadas. s de Valor Default
Podemos atribuir um valor a um em nossos métodos sem que tenha a necessidade de informarmos seu valor, na hora de executar o método.
Exemplo:
procedure TFrmPrincipal.ParamDefault(Valor: Real; Qtd: Integer = 2);
begin
Valor := Valor * Qtd;
end;
Usando o Método
ParamDefault(6000); //Observe que não preciso passar a Qtd, caso ela seja = 2
Fico por aqui ate a próxima Quick Tips.
Um abraço