Estava observando uma das dúvidas enviadas pela página de contato, e achei uma interessante, então, resolvi fazer este artigo para ensinar a vocês como resolver essa dúvida.
A questão é a seguinte: como saber se o que foi digitado dentro de um "TEdit" é um texto?
Explicando rapidamente, ele queria resolver um exercício básico que o professor passou, era pra criar um algoritmo em Delphi que somasse dois números reais ou inteiros digitados pelo usuário, só que ele pensou, "se o usuário digitar um uma letra?".
Muito bem, com base nessa questão, vamos apresentar a solução.
Primeiro passo, crie um projeto, adicionando os seguintes componentes:- 2 TLabelEdit;
- 1 TButton.
Feito isso, declare na seção "Private" a seguinte função:
function IsAphaNumerico(S: string): Boolean;
Pressione "Shift + Ctrl + C" para declará-la na seção "implementation".
Implemente-a da seguinte forma:
function TForm1.IsAphaNumerico(S: string): Boolean;
var
i: Integer;
begin
for i := 1 to Length(S) do
if not(S[i] in ['0' .. '9']) then
begin
Result := True;
Exit;
end;
Result := False;
end;
Só isso, agora vamos usar esta função, pra isso, no evento "OnClick" do botão, implemente o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
n1, n2, soma: Real;
begin
if IsAphaNumerico(Edit1.Text) then
begin
ShowMessage('É texto pow!');
Edit1.Clear;
Edit1.SetFocus;
Abort;
end;
if IsAphaNumerico(Edit2.Text) then
begin
ShowMessage('É texto pow!');
Edit2.Clear;
Edit2.SetFocus;
Abort;
end
else
begin
soma := StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text);
ShowMessage(FloatToStr(soma));
end;
end;
Prontinho, só isso, problema resolvido....Abraço galera, até a próxima.
(Por Welinton Junior)
Quem ficou com alguma dúvida quanto a lógica ou código usado, posta aqui que respondemos! Abraço. Equipe ClipaTec.
ResponderExcluirComo resolvo este erro se digito uma letra na busca pelo idCliente:
ResponderExcluirError
'D' is not a valid integer value for field 'Código'
evento OnChange do TEdit
begin
if (ComboBox1.Text) = ('Código') then
begin
DM.TableCliente.IndexFieldNames:= 'idCliente';
DM.TableCliente.FindNearest([EditBusca.Text]);
end
else if (ComboBox1.Text) = ('Nome') then
begin
DM.TableCliente.IndexFieldNames:= 'NomeCliente';
DM.TableCliente.FindNearest([EditBusca.Text]);
end
else if (ComboBox1.Text) = ('Pai') then
begin
DM.TableCliente.IndexFieldNames:= 'PaiCliente';
DM.TableCliente.FindNearest([EditBusca.Text]);
end
else if (ComboBox1.Text) = ('Mãe') then
begin
DM.TableCliente.IndexFieldNames:= 'MaeCliente';
DM.TableCliente.FindNearest([EditBusca.Text]);
end
end;
Olá Nilton Oliveira, neste caso, recomendamos que você tente converter o que foi digitado para Inteiro dentro de um try...except, caso não consiga converter, significa que o que foi digitado não é um valor inteiro, sendo assim, o código vai ler o que estiver no except. No excpet você cancela a consulta.
ExcluirPara converter um texto em inteiro use a função "StrToInt" do Delphi:
StrToInt(nomeDoEdit.Text);
Aguardamos sua resposta! Abraço.