Desisto do STRFLOAT ninguém sabe mesmo

27/02/2003

0

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 ?


Anonymous

Anonymous

Responder

Posts

27/02/2003

Okama

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


Responder

27/02/2003

Anonymous

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.


Responder

27/02/2003

Anonymous

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


Responder

27/02/2003

Carnette

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;


Responder

27/02/2003

Anonymous

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 ....


Responder

27/02/2003

Anonymous

tente assim

txtpedagio.Text:= formatfloat(´#,0.00´,Strtofloat(txtpedagio.text));


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar