GARANTIR DESCONTO

Fórum Verificar se o numero e string ou Integer #293881

31/08/2005

0

Ola, a duvida e aseguinte

1) Em uma tabela tenho dois campos, um Integer e outro String
2) Para localizar o registro na tabela utilizo um campo Edit, no campo Integer utilizo somente números, no campo String utilizo números e letras, Tem como eu verificar no campo edit se o que foi digitado e somente número ou se contem letras também. ?

desde já grato.


Sdph

Sdph

Responder

Post mais votado

31/08/2005

Stanley,
Use a função StrToIntDef

function StrToIntDef(const S: string; Default: Integer): Integer

Caso ela falhe em converter a string para inteiro, ela devolve o ´Default´. Veja um exemplo:

if StrToIntDef(Edit1.Text, 0) = 0
    //Tem letras
else
    //é número



José Henrique

José Henrique
Responder

Gostei + 2

Mais Posts

31/08/2005

Massuda

Tem como eu verificar no campo edit se o que foi digitado e somente número ou se contem letras também. ?
Tem duas formas...

(1) tenta converter para integer...
var
  N: Integer;
...
  try
    N := StrToInt(Edit1.Text);
  except
    // Edit1 contem um texto que não é um número
  end;
...

(2) checa se a string contem apenas dígitos...
function EhNumero(S: string): Boolean;
var
  I: Integer;
begin
  Result := True;
  for I := 1 to Lenght(S) do begin
    if not (S[I] in [´0´..´9´]) then begin
      Result := False;
      Break;
    end;
  end;
end;

// ex: if EhNumero(Edit1.Text) then...



Responder

Gostei + 0

27/01/2021

Victor

Stanley,
Use a função StrToIntDef

function StrToIntDef(const S: string; Default: Integer): Integer

Caso ela falhe em converter a string para inteiro, ela devolve o ´Default´. Veja um exemplo:

[code:1:1876bb3bb3]
if StrToIntDef(Edit1.Text, 0) = 0
//Tem letras
else
//é número
[/code:1:1876bb3bb3]


Responder

Gostei + 0

27/01/2021

Victor

depois do edit1.text, pq vc colocou o parâmetro 0?

Por exemplo, comparar igual a 0, blz! Vc vê se ele conseguiu converter, mas o parâmetro 0 após o edit1.text, não entendi
Responder

Gostei + 0

28/01/2021

Emerson Nascimento

A função StrToIntDef tenta transformar o primeiro parâmetro num inteiro, se não conseguir, devolve como default o segundo parâmetro.

StrToIntDef('13', 5) -- resultado 13, porque '13' pode pode ser convertido em inteiro
StrToIntDef('EMERSON', 5) -- resultado 5, porque 'EMERSON' não pode ser convertido em inteiro.

Em StrToIntDef(Edit1.Text, 0) se o conteúdo de Edit1.Text não puder ser convertido num inteiro, o retorno será 0.
Por isto a função não serve para identificar se o valor é inteiro, visto que ela sempre retornará um valor inteiro.
Por exemplo:
Edit1.Text := '0';
if StrToIntDef(Edit1.Text, 0) = 0
  ShowMessage('Tem letras')
else
  ShowMessage('É número');
vai apresentar a mensagem 'Tem letras', o que está, obviamente, errado.

o correto é usar o try...except, como apresentado por Massuda:
try
  StrToInt(Edit1.Text);
except
  // Edit1 contem um valor que não é um número
  ShowMessage('Não é um número');
end;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar