Olá galera, nesta Quick Tips, irei mostra a diferença entre duas mensagens muitos comuns em Delphi InputQuery e InputBox. Podemos encontrar estas duas functions em Dialogs.

O que é InputBox ?

InputBox é uma mensagem onde podemos informar um determinado valor, mas sem alterar o valor da variável passada como referencia, veja sua estrutura :


//Função InputBox
function InputBox(const ACaption, APrompt, ADefault: string): string;

O que é InputQuery ?

InputQuery é uma mensagem onde podemos informar um determinado valor, mas alterando o valor da variável passada como referencia, veja sua estrutura :


//Função InputQuery 
function InputQuery(const ACaption, APrompt: string;
  var Value: string): Boolean;

Aparentemente os dois são iguais certo? Sim são iguais, mas uma diferença é a seguinte, quando implementamos o seguinte código no clique de um botão:



procedure TForm1.BitBtn2Click(Sender: TObject);
Var
    StrX : String;
begin
StrX := '10';
InputBox('Titulo','descricao', StrX);
ShowMessage(StrX);

InputQuery('Titulo','descricao', StrX);
ShowMessage(StrX);
end;

Notaremos que ao exibir a mensagem com o valor 10 na caixa de texto, se mudarmos o seu valor para 5 por exemplo, o primeiro ShowMessage irá exibir o valor de StrX, no caso 10, já quando formos exibir a mensagem com InputQuery, se mudarmos o valor da caixa de texto o segundo ShowMessage irá exibir o valor alterado, como isso é possível ? Atraves da passagem de parâmetros por referencia, onde ao alterar o conteúdo de um parâmetro o externo também é alterado.

A única necessidade que temos de usar a principio de um InputQuery para o InputBox, seria se fosse necessário pegar o conteúdo informado pelo usuário, caso contrário poderíamos usar os dois sem diferença alguma.

Fico por aqui ate à próxima Quick Tips

Um abraço

Wesley Y