TryStrToInt, InputBox e InputQuery no Delphi
Autor: ClipaTec Informática | Publicado: 2016-07-18T14:45:00-03:00


Ola clipatequeiros! Suave na nave?

Neste artigo vamos apresentar a vocês três recursos presentes no Delphi que podem ser úteis em algum momento nos projetos de vocês. Vem com a gente que vocês vão se dar mal kkkkk zoeira gente! Cola com a gente que vocês vão brilhar. Let's go!!!

Para prosseguirmos, crie um novo projeto e coloque nele três "LabeledEdit" e três "Button". Segue a propriedade "Name" de cada um:





TLabeledEdit: edtNumero,&nbsp;edtInfoBox,&nbsp;edtInfoQuery;
TButton: btnConverter, btnInputBox, btnInputQuery;



No final teremos algo como isso:







Vamos começar falando sobre a função "TryStrToInt", que por sinal, muita gente não conhece, e é bem útil.



TryStrToInt



Esta função é utilizada para tentar converter um valor "String" em "Inteiro". É necessário fazermos este tipo de tratamento no sistema quando em algum momento precisamos ler um valor inteiro digitado em um "Edit", por exemplo, a idade de um cliente, geralmente, tratamos esta informação como sendo inteira, porém, se o usuário digitar uma letra, vai gerar aquele erro chato "is not a valid integer value.", atire a pedra quem nunca se deparou com este miserável kkk.

Porque isso acontece? Porque o "Edit" contém valor "String" e se atribuirmos o valor dele para uma variável "Inteiro" vai gerar este erro, caso a função "StrToInt" não conseguir converter o valor digitado. Obviamente que temos a propriedade "NumberOnly" do "Edit" que quando ativada (igual a True) nem permite o usuário digitar letra, isso evita programação. Mas, para este exemplo ficar claro, suponhamos que não exista esta propriedade e você precisa garantir a conversão do dado "String" digitado para "Inteiro". Se usarmos a função "StrToInt", funciona perfeitamente caso o valor digitado seja possível converter para "Inteiro", caso contrário vai gerar aquele erro lindo que citamos acima.&nbsp;

Para resolver essa questão, temos que fazer um tratamento via programação. E para este tratamento, a maioria usa o "Try...Except", sendo assim, se não for possível converter o valor, vai cair no bloco de exceção onde terão as tratativas, seja mandar uma mensagem de erro gerado pela classe de exceção, ou alterar para um valor padrão, ou coisa do tipo. Acontece, que não é interessante criar um bloco de tratamento "Try...Except" para uma informação tão simples como esta. Seria uma alocação de recursos desnecessária.&nbsp;

Legal, é aí que entra em cena a nossa querida função "TryStrToInt". O que ela faz? Vamos lá.

Esta função pede dois parâmetros, onde o primeiro é o valor a ser convertido, e o segundo, a variável que vai receber o valor de saída, que é o valor convertido. Se tudo isso ocorrer bem, a função retornará "True", ou seja, o valor foi convertido com sucesso e já está na variável de saída. Caso não seja possível converter o valor, a função retornará "False", então, apenas geramos uma mensagem simples ao usuário dizendo por exemplo que o valor digitado não é válido.

Legal, bacana. Não usamos o bloco "Try...Except" que faria uma consulta completa na classe de exceção, com isso, menos recursos alocado, mais praticidade, código limpo.

Claro que, se você deseja tomar outras decisões, com mais personalizações, então é melhor que se use o "Try...Except" mesmo.

Muito bem minha gente. Da mesma forma, existem funções como esta para outros tipos de dados, vamos listar as mais usadas:





TryStrToBool()
TryStrToCurr()
TryStrToDate()
TryStrToDateTime()
TryStrToFloat()





Use, teste e divirta-se. Abaixo temos um exemplo onde vamos converter o valor digitado no "Edit" para "Inteiro", para isso, basta dar um duplo-clique sobre o botão "Converter - btnConverter" e implementá-lo da seguinte forma:









InputBox



Muito bem. Eis ai outra função sensacional. Sabe quando você precisa que o usuário te informe uma única informação? Muitos tem o trabalho de criar um novo formulário onde vai ter apenas um "Edit" e os botões "Ok" e "Cancelar". Um trampo lascado apenas para receber uma informação do usuário. Por exemplo, supomos que ao finalizar uma venda, o sistema peça para informar o CPF do cliente.

Legal, pra você não ter que criar um formulário só pra isso, existe esta linda função no Delphi que vai solucionar este problema.

A função "InputBox" é utilizada para pegar uma informação digitada pelo usuário e armazenar em uma determinada variável. Valeu ressaltar que o valor que ela retorna que fora digitado, é sempre "String". Se você precisa de um valor de outro tipo, basta apenas convertê-lo posteriormente.

Esta função pede três parâmetros, onde o primeiro é uma "String" que aparecerá no título da janela, o segundo é uma "String" que vai aparecer ao lado de um campo de entrada e o terceiro é um valor padrão. Segue algumas considerações sobre o valor padrão, quando definido:





Ao abrir a janela, o campo de entrada já vem preenchido com ele;
Se você não apagar o valor padrão do campo, a função vai retorná-lo independente se você clicar em "Ok" ou "Cancel";
Se você apagar e clicar em "Cancel" ele retornará o valor padrão;
Se você apagar e clicar "Ok" ele vai retornar o valor vazio;
Se você digitar algo e clicar em "Ok", ela retorna o que você digitou;
Se você digitar algo e clicar em "Cancel" ela retorna o valor padrão;





Segue abaixo um exemplo de uso, para implementar, basta dar um duplo-clique sobre o botão "InputBox - btnInputBox":









InputQuery



Esta função é praticamente idêntica à anterior. A diferença é que ela retorna "True" quando o usuário clica no botão "Ok" e "False" quando o usuário clica no botão "Cancel".

A vantagem é que se o usuário clicar em "Cancel", o valor digitado é perdido, sendo assim, não altera o anterior, como acontece com o "InputBox".

Se clicar em "Ok", ai sim, o valor da variável é alterado. Segue o exemplo abaixo, para implementar, basta clicar duas vezes sobre o botão "InputQuery - btnInputQuery":









Show galera, simples, rápido e eficiente, esperamos que seja útil pra vocês em algum momento. Comente, compartilhe e siga-nos. Estamos juntos Everrr! Abraço e até o próximo.



(Por ClipaTec Informática)