Valor não é valido??
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.
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
Curtidas 0
Respostas
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
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
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
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.
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
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);
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
25/11/2004
Colega,
Veja o código abaixo, onde eu utilizei um Edit (Edit40) para servir de testes:
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
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
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?
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
25/11/2004
Prezados colegas,
Fechou.
Agradeço pela ajuda de todos, resolvi o problema usando a função FormatFloat.
[]´s,
Fabiano.
Fechou.
Agradeço pela ajuda de todos, resolvi o problema usando a função FormatFloat.
[]´s,
Fabiano.
GOSTEI 0