Desisto do STRFLOAT ninguém sabe mesmo
27/02/2003
0
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
Posts
27/02/2003
Okama
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
27/02/2003
Anonymous
27/02/2003
Anonymous
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
27/02/2003
Carnette
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;
27/02/2003
Anonymous
27/02/2003
Anonymous
txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));
Clique aqui para fazer login e interagir na Comunidade :)