Delphi

vitao1718

know-it-all Member
Registrado
Galera preciso faze um programa de DELPHI pra amanha so falta valida dados xD
como fazia pra ver se o que tem digitado em um campo é string??????no vsual basic tem o isnumeric e talz ne mas e em delphi nao lembro

plz alguem me fala ae uAHUhuUHahuuha.
 
Você pode converter o que estiver digitado no campo de string para float utilizando a função "trystrtofloat". Se for possível converter a string em número, o resultado da função será true.

Exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var valor:double;
begin
if trystrtofloat(edit1.Text,valor) = false then showmessage('O valor não é numérico.');
end;
 
Tem outros metodos mas o que o cara postou é o melhor. Vc tb pode fazer um mask edit no lugar do edit normal e configurar soh pra strings!
 
cara tipo pra que server esse var ae pq so novo nisso e tah dano erro por causa disso aki ...hehe
 
por enquanto tah assim ó


procedure TForm1.Button1Click(Sender: TObject);
var valor:double;
begin
if trystrtoint(numero1.text,double)=false then
if (numero1.text <>'') and (numero2.text<>'') then
resultado.caption:=inttostr(strtoint(numero1.text)+ strtoint(numero2.text))
else
resultado.Caption:='Valor nao numerico ou campo em branco';
numero1.setfocus
end;

end.




nao compila hehe
 
Tenta assim:

procedure TForm1.Button1Click(Sender: TObject);
var valor:double;
begin
if (trystrtofloat(numero1.text,valor)) and (trystrtofloat(numero2.text,valor)) then
resultado.caption:=formatfloat('0.##',(strtofloat(numero1.text) + strtofloat(numero2.text)))
else
resultado.Caption:='Valor nao numerico ou campo em branco';
numero1.setfocus;
end;
 
ae agora foi
hehee mas nao sei nada desses negocio que vc coloco ae se der pra me ensinar seria legal ,,, o negocio do var etalz a unica coisa que sei de var e que coloca um tamanho na memoria pra variavel e depois vc usa esse espaço pra facilitar nas contas tal mas esse negovio de double e tal eu nem sei e a sintaxe do trystrtoint eu tmbm nao entendi nao...

a e esse formatfloat pra que serve?
nem no livro meu aki tem isso hehe.
mas vlw ae problema resolvido.:yes:
 
Vc colocou Double ao invés de Valor. Double é o tipo da variavel, Valor é o nome dela. Vc sempre tem que usar o seu nome para fazer referência a ela!
 
"Double" é um tipo de variável que armazena qualquer número real (inclusive com casas decimais), ao contrário da variável do tipo integer, que como o nome diz serve apenas para números inteiros.
O alcance da variável "double" vai de 5.0 x 10^-324 até 1.7 x 10^308.

O TryStrToFloat é uma função do delphi que pega uma string (que no seu programa está nos campos numero1 e numero2) e tenta convertê-la para número real. Se conseguir, a função retorna um resultado "verdadeiro" (true) e armazena o número real na variável que foi declarada na função (neste caso, a variável do tipo "double" chamada "valor" - ou um nome qualquer que você quiser dar a ela). Se não conseguir (ex: o campo está vazio, ou a string não é numérica) a função retorna um resultado "falso" e mostra aquela mensagem de "valor não numérico..." .

Se o resultado da função TryStrToFloat for "verdadeiro", que é o que a linha abaixo significa,

if (trystrtofloat(numero1.text,valor)) and (trystrtofloat(numero2.text,valor))

o algoritmo transforma as strings dos campos em números reais (strtofloat),faz a soma deles, e converte o resultado para string novamente (formatfloat), conforme mostrado abaixo:

then resultado.caption:=formatfloat('0.##',(strtofloat( numero1.text) + strtofloat(numero2.text)))

O parâmetro '0.##' diz à função formatfloat com até quantas casas decimais o resultado deve ser mostrado. Se for usado #, significa que aquela casa decimal é opcional. Por exemplo, se for digitado 4 e 4, o resultado mostrado será 8. Se o usuário digitar 4 e 4,123, o resultado será mostrado como 8,12, porque foi definida a apresentação de apenas duas casas decimais (##). Se em vez de # você usar 0 (ex: '0.00000') o resultado será mostrado como 8,12300.
 
Faz um tempo que eu não uso delphi, mas na minha epoca eu fazia algo assim

var
n : Integer;
begin
Try
n := strtoint(numero.text);
except
on E : EConversionError do
ShowMessage(E.ClassName+' Erro na conversão dos dados : '+E.Message);
end;
end;
 

Users who are viewing this thread

Voltar
Topo