Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Delalibera

Calculo de porcentagem - Erro

Recommended Posts

Bom galera, eu converto o texto em um edit pra fazer o calculo do frete assim:

 

var

CalcFrete: Real;

 

 

CalcFrete:=StrToFloat(editPorcentagem.Text);

CalcFrete:=CalcFrete/100;

 

depois eu coloco os calculos referentes..

 

funciona legal.. calcula certinho

mas só quanto uso numeros inteiros, se eu colocar por exemplo 8.5.. que deveria dividir por 100 e ficar 0,085, ele da erro .. nao sei como fazer essa conversar funcionar.. talvez meu cliente nem utilize porcentagens quebradas.. porém ja que é pra fazer, vou deixar a coisa certinha.. espero a ajuda de vcs.. obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, bom dia.

O que está acontecendo é que estes tipos de valores não são de pontos flutuantes (Float), nem pontos.

O certo seria: 0,85 vide vírgula

Talvez possa fazer assim:

 

procedure TForm1.Button1Click(Sender: TObject);
var
CalcFrete : real;
begin
  CalcFrete := StrToFloat(editporcentagem.Text);
  CalcFrete := (CalcFrete/100);
  Editresultado.Text := FloattoStr(CalcFrete);
  Editporcentagem.Text := '';
  Editporcentagem.SetFocus;
end;

Colocando o resultado em outro edit (Editresultado) e, [após pressionado o Button1] deixando o Editporcentagem em branco, caso o usuário queira fazer outro cálculo.

Agora, para inabilitar o usuário à colocar o ponto, pode-se fazer assim:

 

(no evento onKeyPress do Editporcentagem)

 

procedure TForm1.EditporcentagemKeyPress(Sender: TObject; var Key: Char);
 begin
  if not (key in ['0'..'9', #8, #44]) then
  //#44 => virgula | #8 => backspace
	begin
	  Application.MessageBox('Não utlize pontos!', 'titulo', MB_ok +
	  MB_defbutton1 + MB_iconerror);
	  Editporcentagem.Text := '';
	  Abort;
	end;
 end;

Sendo assim, ele não irá adicionar nada que possa induzir a um erro, nem letras, nem pontos.

Bom, talvez haja outra maneira, mas, foi um escape que consegui para o seu problema.

 

Qualquer coisa poste aí.

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.