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