Lance mais estranho com vírgula...
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;
// 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
Curtidas 0
Respostas
Rjun
22/08/2005
Você pode usar a função StringReplace.
valor := StringReplace(Valor, ´,´, ´.´, rfReplaceAll);
GOSTEI 0
Laelsonc
22/08/2005
A função acima faz a mesma coisa...não seria 6 por meia duzia ?
GOSTEI 0
Rjun
22/08/2005
Eu só postei a função para você economizar código. Em que momento os erros acontecem?
GOSTEI 0
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
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
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
22/08/2005
Que banco de dados você esta usando?
GOSTEI 0
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
22/08/2005
coloque no OnCreate do form principal.
[b:ed72b8ea85]DecimalSeparator := ´.´;[/b:ed72b8ea85]
[b:ed72b8ea85]DecimalSeparator := ´.´;[/b:ed72b8ea85]
GOSTEI 0
Laelsonc
22/08/2005
Vou tentar estas opções depois comunico ok...
Mas obrigadão por tudo pessoal !
Mas obrigadão por tudo pessoal !
GOSTEI 0
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 ?
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