Valor não é valido??

Delphi

25/11/2004

Bom dia a todos,

Mas uma vz peço a ajuda de vcs para resolver o seguinte problema: Estou trabalhando numa aplicação que foi desenvolvida em delphi 5 usando BDE/Paradox. Essa aplicação executa vários calculos e em um desses calculos, se forem informados determinados valores, aparece a seguinte mensagem de erro: ´1097,52´ is not a valid floating point value. Com alguns outros valores isso não acontece. Não sei por qual o motivo, alguem saberia me responder?

Desde já agradeço a todos.
[]´s,
Fabiano.


Fabiano_aprendiz

Fabiano_aprendiz

Curtidas 0

Respostas

Jc_analista

Jc_analista

25/11/2004

Verifique se na hora do calculo um dos valores esta nullo ou com algum caracter alfanumerico que não seja um destes (, . R$)


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

25/11/2004

Sim, o ponto e a virgula existem, mas existem outras dezenas de valores e varios outros calculos e todos possuem ponto e virgula, naum to entendendo o porq de só acontecer o erro com esse calculo.


GOSTEI 0
Massuda

Massuda

25/11/2004

Não sei responder sua dúvida, mas existem tantos modos de converter string para float que talvez ajudasse se você postasse aqui o código problemático... mas se ele for muito grande, talvez espante o pessoal :wink:


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

25/11/2004

Colega,

Normalmente o separador decimal é o ponto e não vírgula, salve espeficicação em contrário por meio da variável DecimalSeparator.
Como já sugerido, coloque um fragmento do código para análise.


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

25/11/2004

Bem, eh uma aplicação bem complicada para chegar no calculo final, tem q se passar por várias partes do código. Os valores usados para o cálculo estão armazenados em uma tabela da seguinte forma: 32,83 e 1.604,69.

Debugando o programa, a linha em q acusa a mensagem é:

If FrmGrerj.Edit40.Visible = True Then
vSubTotal := vSubTotal + StrToFloat(FrmGrerj.Edit40.Text);


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

25/11/2004

Colega,

Veja o código abaixo, onde eu utilizei um Edit (Edit40) para servir de testes:

var vSubTotal: Currency;
    VelhoSeparador: Char;
begin
  VelhoSeparador    := DecimalSeparator;
  DecimalSeparator  := ´,´; // Troque pelo separador desejado.
  vSubTotal := vSubTotal + StrToFloat(Edit40.Text);
  DecimalSeparator  := VelhoSeparador;
end;



GOSTEI 0
Massuda

Massuda

25/11/2004

Um detalhe... conforme a Ajuda do Delphi:
Thousand separators and currency symbols are not allowed in the string.
Portanto, seu exemplo ´1.604,69´ deve gerar também a exceçao ´is not a valid floating point value´. Remova o símbolo de milhar da sua string ou use outra função para converter de string para float.


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

25/11/2004

Caros,

Ao tentar remover o ponto na tabela, quando vou salvar a alteração, o ponto retorna, quer dizer, não consigo salvar na tabela o valor 1064,69. Nas configurações do windows não tem como eu deixar o simbolo de agrupamento de digitos sem nada. Alguem tem uma ideia?


GOSTEI 0
Fabiano_aprendiz

Fabiano_aprendiz

25/11/2004

Prezados colegas,
Fechou.
Agradeço pela ajuda de todos, resolvi o problema usando a função FormatFloat.

[]´s,
Fabiano.


GOSTEI 0
POSTAR