Como saber se é um numero
Ai galera tudo jóia.
Alguém sabem me dizer como faço pra saber se um determinado valor gravado dentro de um string é um número?
Alguém sabem me dizer como faço pra saber se um determinado valor gravado dentro de um string é um número?
Mitsalito
Curtidas 0
Melhor post
Emerson Nascimento
18/11/2004
há varias formas. uma delas:
try
    StrToFloat( Valor );
    ShowMessage(´É numérico´);
except
    ShowMessage(´Não é numérico´);
end;
try
    StrToFloat( Valor );
    ShowMessage(´É numérico´);
except
    ShowMessage(´Não é numérico´);
end;
GOSTEI 1
Mais Respostas
Weber
18/11/2004
var Variavel: Shortstring; heNumero: Currency; lNumero: boolean; begin Try heNumero := StrToCurr(Trim(Variavel); lNumero := True; except lNumero := False; end; end;
Não testei mas acho que deve funcionar.
GOSTEI 0
Mitsalito
18/11/2004
Galera foi mau me precipitei ao perguntar devia ter tentado antes, mas já que enchi o saco uma possivel resposta
if (not(Valor[i] in [´0´ .. ´9´, #8])) then
begin
resultado := não numérico;
if (not(Valor[i] in [´0´ .. ´9´, #8])) then
begin
resultado := não numérico;
GOSTEI 0
Marco Salles
18/11/2004
Galera foi mau me precipitei ao perguntar devia ter tentado antes, mas já que enchi o saco uma possivel resposta
if (not(Valor[i] in [´0´ .. ´9´, #8])) then
begin
resultado := não numérico;
No meu entendimento, isto não e bem assim :cry:
1) Voce tem que varrer a String Valor :idea:
2) o [b:44e061f87d]decimal Separador [/b:44e061f87d]na sua rotina nao esta incluido :cry:
quer dizer que [b:44e061f87d]10,00 não e um número?????[/b:44e061f87d] :?: :?: :?:
GOSTEI 0
Weber
18/11/2004
try
StrToFloat( Valor );
ShowMessage(´É numérico´);
except
ShowMessage(´Não é numérico´);
end;
A melhor forma é essa, a prova de falhas.
GOSTEI 0
Mitsalito
18/11/2004
meu amigo substitui o #8 por ´,´
GOSTEI 0
Paulo_amorim
18/11/2004
[quote:343e452cee=´emerson.en´]
try
StrToFloat( Valor );
ShowMessage(´É numérico´);
except
ShowMessage(´Não é numérico´);
end;
A melhor forma é essa, a prova de falhas.[/quote:343e452cee]
Olá
Na realidade, há casos em que o bloco try..except falha, não sei o motivo... já ouvi várias recomendações de que se faça o teste caracter por caracter como o Mitsalito mandou.
Com um detalhe: incluir DecimalSeparator e ThousandSeparator
AtÉ+
GOSTEI 0
Massuda
18/11/2004
Não tenho números para verificar, mas acho que a versão que gera exceção é, em termos de desempenho, muito pior do que a versão que testa caractere por caractere no caso de receber uma string que não contenha um número válido. Dependendo da situação, isso pode fazer diferença.
GOSTEI 0
Marco Salles
18/11/2004
meu amigo substitui o #8 por ´,´
Tb acho que nao e assim :cry:
Se o [b:dff3edc143]Decimal Separador[/b:dff3edc143] Escolhido No [b:dff3edc143]S.O[/b:dff3edc143] For Um Ponto No Lugar Da Virgula voce nao terá exito...
Acho que é assim :
function Verificar(Valor:String):Boolean; var i:Integer; begin result:=True; for i:=1 to Length(valor) do begin if (not(valor[i] in [´0´ .. ´9´,DecimalSeparator])) then begin result :=false; exit; end; end; end;
GOSTEI 0
Thomaz_prg
18/11/2004
Se a versão do delphi for 6 ou acima vc pode tentar assim:
var
v:Real
IF TryStrToFloat( edit1.text , v )
showmessage(´É um número´)
ELSE
Showmessage(´Não é um número´);
var
v:Real
IF TryStrToFloat( edit1.text , v )
showmessage(´É um número´)
ELSE
Showmessage(´Não é um número´);
GOSTEI 0
José Henrique
18/11/2004
No Delphi 5 tem
function StrToIntDef(const S: string; Default: Integer): Integer;
que retorna o Default caso S não seja integer.
Henrique.
function StrToIntDef(const S: string; Default: Integer): Integer;
que retorna o Default caso S não seja integer.
var Number: Integer; begin Number := StrToIntDef(Edit1.Text, 0); if Number = 0 then // é número inteiro else // não é end;
Henrique.
GOSTEI 0