ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

2 de abril de 2013

Verificar se o que foi digitado é um texto no Delphi

Fala galera!
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) 

3 comentários:

  1. Quem ficou com alguma dúvida quanto a lógica ou código usado, posta aqui que respondemos! Abraço. Equipe ClipaTec.

    ResponderExcluir
  2. Como resolvo este erro se digito uma letra na busca pelo idCliente:

    Error
    '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;

    ResponderExcluir
    Respostas
    1. 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.

      Para converter um texto em inteiro use a função "StrToInt" do Delphi:

      StrToInt(nomeDoEdit.Text);

      Aguardamos sua resposta! Abraço.

      Excluir

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!