Virgula no lugar de ponto

Delphi

07/12/2010

Olá pessoal estou com um problema com um campo numerico em uma tabela quando o cliente usa um micro terminal para adicionar a quantidate de produto ele tem q colocar fracionario Tipo: 2.05 ou 10.50

so que o sistema esta dando erro quando é informado o ( . ) como é um micro terminal ele nao tem virgula e quando adiciona o ponto da o seguinte erro:

02.05 is not a valid floating point value


O problema esta no ( . ) se eu colocar a ( , ) funciona mas o micro terminal nao tem virgula

a linha de comando q estou usando é esta:

  // lancar no banco de dados
  frmmodulo.st_consumo.Close;
  frmmodulo.st_consumo.ParamByName('cod_mesa').asinteger   := strtoint(comanda);//StrToInt(frmPrincipal.lb_mesa.Caption);
  frmmodulo.st_consumo.ParamByName('cod_produto').asstring := frmmodulo.qrproduto.fieldByName('codigo').AsString;
  frmmodulo.st_consumo.ParamByName('qtde').asfloat         := StrToFloat('0' + teclado);
  frmmodulo.st_consumo.ParamByName('unitario').asfloat     := strToFloat(frmmodulo.qrproduto.fieldByName('precovenda').AsString);
  // calcula o valor total....
vValor := frmmodulo.st_consumo.ParamByName('qtde').asfloat * strToFloat(frmmodulo.qrproduto.fieldByName('precovenda').AsString);


O problema esta na linha em vermelho quando recebe as informações do terminal no caso o produto com o campo 2.05 ele da erro...
Laelson Fagundes

Laelson Fagundes

Curtidas 0

Respostas

Leonardo Xavier

Leonardo Xavier

07/12/2010

A variavel teclado é o valor fracionado seria isso? Ou seja o valor 2.05
GOSTEI 0
Laelson Fagundes

Laelson Fagundes

07/12/2010

a variavel Teclado = teclado: string; // BUFFER DO TECLADO

ela pega as informações digitada no teclado...

ou ceja como o Micro terminal não tem virgula so o Ponto se eu digitar por exemplo 0.55 ele m da o erro mencionado acima

e se eu não digitar o ponto colocar dessa forma 055 ele m da um numero inteiro 55 esse esta sendo meu problema ele tem q converter esse ponto em uma virgula ou uma outra forma de o sistema aceitar essas informações...
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

07/12/2010

Certo agora intendi como funciona seu script, eu nao sabia que seu terminal funiconava assim. Bom Temos uma questao lógica aqui, temos que tratar os dados coletados do teclado antes de envia-los para sua função, isso será bem siomples, antes de fazermos esta funçao, permita me lhe fazer uma pergunta. Se você colocar em seu código uma ',' o sitema no terminal apresenta a virgula?
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/12/2010

frmmodulo.st_consumo.ParamByName('qtde').asfloat := StrToFloat('0' + stringreplace( teclado, '.' , ',' , [] ) );

GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/12/2010

frmmodulo.st_consumo.ParamByName('qtde').asfloat := StrToFloat('0' + stringreplace( teclado, '.' , ',' , [] ) );

tome cuidado com o valor que vêm nessa variável. se for uma milhar e vier com vígula separando a milhar, você deve tirar a vírgula antes de fazer a troca do ponto por vírgula.


GOSTEI 0
Laelson Fagundes

Laelson Fagundes

07/12/2010

ainda esta dano o mesmo erro...
GOSTEI 0
Laelson Fagundes

Laelson Fagundes

07/12/2010

ainda esta dano o mesmo erro...


Não da o erro mais mas porem ainda esta m jogando como campo inteiro...

nao esta jogando fracionario...
GOSTEI 0
Laelson Fagundes

Laelson Fagundes

07/12/2010

Blz Pessoal ja resolvi aqui o problema com a função do emerson m passou

mais uma vez muito obrigado....
GOSTEI 0
POSTAR