Lance mais estranho com vírgula...

Delphi

22/08/2005

Pessoa eu estou inserindo valor flutuante no meu banco de dados usando uma funçao que converte a virgula para ponto. Tudo bem. Em algumas máquinas usando o padrão ABNT e ABNT 2 tranquilo e com versões de win diferentes. Mas tem algumas que mesmo com os padrões acima quando eu mando inserir o valor ele dá erro de ponto flutuante. Ja tentei de tudo alguem tem alguma dica ou ja aconteceu algo parecido ????

// ESTA É A FUNÇAO QUE EU USO

function TrocaVirgPPto(Valor: string): String;
var i:integer;
begin
if Valor <> ´ ´ then
begin
for i := 0 to Length(Valor) do
begin
if Valor[i] = ´,´ then
begin
Valor[i]:=´.´;
end;
end;
end;
Result := valor;
end;


Laelsonc

Laelsonc

Curtidas 0

Respostas

Rjun

Rjun

22/08/2005

Você pode usar a função StringReplace.

  valor := StringReplace(Valor, ´,´, ´.´, rfReplaceAll);



GOSTEI 0
Laelsonc

Laelsonc

22/08/2005

A função acima faz a mesma coisa...não seria 6 por meia duzia ?


GOSTEI 0
Rjun

Rjun

22/08/2005

Eu só postei a função para você economizar código. Em que momento os erros acontecem?


GOSTEI 0
Michael

Michael

22/08/2005

Completando o que foi dito pelo colega [b:01c70ad4a7]Rjun[/b:01c70ad4a7], existe tbm as funções [b:01c70ad4a7]AnsiReplaceStr [/b:01c70ad4a7]e [b:01c70ad4a7]AnsiReplaceText[/b:01c70ad4a7]. Ambas localizam e substituem todas as ocorrências de uma determinada string em outra. A diferença é que a primeira é case-sensitive, e a segunda não.

Economiza-se alguns caracteres com elas, já que a função [b:01c70ad4a7]StringReplace [/b:01c70ad4a7]requer um flag de controle como 4º parâmetro... ;-)

[]´s


GOSTEI 0
Laelsonc

Laelsonc

22/08/2005

O erros só acontecem em algumas máquinas. Em outras tudo acontece da melhor maneira. Pensei ser os padrões do teclado, alterei e mesmo eu digitando a vírgula tudo normal ele dá o erro de ponto flutuante. Engraçado que em algumas máquinas não acontece...


GOSTEI 0
Rjun

Rjun

22/08/2005

Que banco de dados você esta usando?


GOSTEI 0
Massuda

Massuda

22/08/2005

Talvez isso ajude... nas máquinas onde funciona, qual caractere está configurado como símbolo (separador) decimal? É o mesmo caractere usado nas máquinas onde não funciona?


GOSTEI 0
Wilson Brito

Wilson Brito

22/08/2005

coloque no OnCreate do form principal.

[b:ed72b8ea85]DecimalSeparator := ´.´;[/b:ed72b8ea85]


GOSTEI 0
Laelsonc

Laelsonc

22/08/2005

Vou tentar estas opções depois comunico ok...

Mas obrigadão por tudo pessoal !


GOSTEI 0
Laelsonc

Laelsonc

22/08/2005

Pessoal fiz todos esses testes mas o que descobri não tinha nada a ver com as funções.

Eu instalei o banco ( MySQL ) na minha máquina e apontei as estações pra mim. Todas elas agem normalmente. Quando eu isntalei o Banco em uma outra máquina e meu aplicativo ele apresenta este problema. OU seja, é como se o banco estivesse pegando uma propriedade de separação decimal da máquina servidora. Ja olhei a tabela que importei mas nada incomum. Existe realmente isso com os bancos de dados ? As propriedades de idiomas estão todas iguais.
Alguma pista a seguir pessoal ?


GOSTEI 0
POSTAR