Desisto do STRFLOAT ninguém sabe mesmo
bom tentei de vários jeitos e nada , niguem consguiu me ajudar , uns falaram que o DELPHI naum aceita (.) pontos , outros pediram para usar DecimalSeparator usei e deu pau do mesmo jeito. To fazendo assim :
ThousandSeparator:= ´.´;
DecimalSeparator:= ´,´;
CurrencyDecimals:= 2;
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
também naum dá certo coloco um valor tipo 1.123,55 dá erro , entaum o que devo fazer ? como proceder, naum uso o (.) ponto ?
alguém sabe algum jeito , o campo é string .... tem alguma ideia ?
ThousandSeparator:= ´.´;
DecimalSeparator:= ´,´;
CurrencyDecimals:= 2;
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
também naum dá certo coloco um valor tipo 1.123,55 dá erro , entaum o que devo fazer ? como proceder, naum uso o (.) ponto ?
alguém sabe algum jeito , o campo é string .... tem alguma ideia ?
Anonymous
Curtidas 0
Respostas
Okama
27/02/2003
Trabalhar com float é um pé no saco, mas não impossível.
Preciso ir embora agora, se o tópico estiver aqui até amanhã eu te mando uma rotina pra corrigir isso, ou me mande um e-mail
tecnobytecorp@bol.com.br
Preciso ir embora agora, se o tópico estiver aqui até amanhã eu te mando uma rotina pra corrigir isso, ou me mande um e-mail
tecnobytecorp@bol.com.br
GOSTEI 0
Anonymous
27/02/2003
Use um TMaskEdit e configure a maskara, caso esta usuando o DBEdit configura a propriedade Display Format para #.00. Caso queira uma coisa mais avançada crie um componete para entradas de dados do tipo float e currency. Dica: no evento onKeypress, verifique a existencia de ponto e virgula com um pouco de criatividade voce consegue, caso não consiga ou esta resposta não tenha te esclarecido me envie um e-mail (lg002@bol.com.br) me explicando o caso.
GOSTEI 0
Anonymous
27/02/2003
ao invés de desistir, tente isso :
esse erro está ocorrendo pq ´1.524,00´ não é um real válido, a forma correta seria : ´1524,00´ (sem os pontos), então declare a funçãozinha abaixo para retirar os pontos...
function tiraPontos(s : string) : real;
var
tmp : string;
i : integer;
begin
tmp := ´´;
for i := 1 to length(s) do
begin
if s[i] <> ´.´ then
tmp := concat(tmp, s[i]);
end;
tiraPontos := StrToFloat(tmp);
end;
então chame a função para retirar os pontos de sua string....
txtpedagio.Text := FormatFloat(´#,0.00´, tiraPontos(TxtPedagio.Text));
Espero ter ajudado,
[]´s
Rodrigo Duarte
esse erro está ocorrendo pq ´1.524,00´ não é um real válido, a forma correta seria : ´1524,00´ (sem os pontos), então declare a funçãozinha abaixo para retirar os pontos...
function tiraPontos(s : string) : real;
var
tmp : string;
i : integer;
begin
tmp := ´´;
for i := 1 to length(s) do
begin
if s[i] <> ´.´ then
tmp := concat(tmp, s[i]);
end;
tiraPontos := StrToFloat(tmp);
end;
então chame a função para retirar os pontos de sua string....
txtpedagio.Text := FormatFloat(´#,0.00´, tiraPontos(TxtPedagio.Text));
Espero ter ajudado,
[]´s
Rodrigo Duarte
GOSTEI 0
Carnette
27/02/2003
bom tentei de vários jeitos e nada , niguem consguiu me ajudar , uns falaram que o DELPHI naum aceita (.) pontos , outros pediram para usar DecimalSeparator usei e deu pau do mesmo jeito. To fazendo assim :
ThousandSeparator:= ´.´;
DecimalSeparator:= ´,´;
CurrencyDecimals:= 2;
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
também naum dá certo coloco um valor tipo 1.123,55 dá erro , entaum o que devo fazer ? como proceder, naum uso o (.) ponto ?
alguém sabe algum jeito , o campo é string .... tem alguma ideia ?
Esta função deverá resolver o teu problema..voce faz a chamada assim:
txtpedagio.Text:= formatfloat(´,0.00´,Stringtofloat(txtpedagio.text));
function StringToFloat(s : string) : Extended;
{ Filtra uma string qualquer, convertendo as suas partes
numéricas para sua representação decimal, por exemplo:
´R$ 1.200,00´ para 1200,00 ´1AB34TZ´ para 134}
var
i :Integer;
t : string;
SeenDecimal,SeenSgn : Boolean;
begin
t := ´´;
SeenDecimal := False;
SeenSgn := False;
{Percorre os caracteres da string:}
for i := Length(s) downto 0 do
{Filtra a string, aceitando somente números e separador decimal:}
if (s[i] in [´0´..´9´, ´-´,´+´,DecimalSeparator]) then
begin
if (s[i] = DecimalSeparator) and (not SeenDecimal) then
begin
t := s[i] + t;
SeenDecimal := True;
end
else if (s[i] in [´+´,´-´]) and (not SeenSgn) and (i = 1) then
begin
t := s[i] + t;
SeenSgn := True;
end
else if s[i] in [´0´..´9´] then
begin
t := s[i] + t;
end;
end;
Result := StrToFloat(t);
end;
GOSTEI 0
Anonymous
27/02/2003
OBRIGADO amigos pela ajuda de todos , mais acho que me expressei mal , eu preciso que no txtpedagio o valor sai como DECIMAL sim de qq jeito , o cara digita 1100,23 e após o enter me aparece 1.100,23 , valeu a ajuda ,,, naum sei mais o que fazer ....
GOSTEI 0
Anonymous
27/02/2003
tente assim
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
GOSTEI 0