Converter Float para String!
Galera seguinte eu tenho esse comando em um dos meus edits. Em um ponho o valor em um, no outro ponho o desconto e no terceiro ele me da o valor com colocando ,00 no final.
Porem na hora q mando gravar em vez de ele gravar 176,00 ele só grava 176.
Creio q seja pq ele mostre como float e se eu tento reconverter pra string o delphi nao aceita.
Porem na hora q mando gravar em vez de ele gravar 176,00 ele só grava 176.
Creio q seja pq ele mostre como float e se eu tento reconverter pra string o delphi nao aceita.
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
VAR NUM1, NUM2, NUM3 : Real;
num4,num5 : string;
begin
begin
key:=AnsiUpperCase(Key)[1];
if key = #13 then
begin
SelectNext (ActiveControl,true,true);
key := #0;
if edit5.Text = '' then
edit5.Text := '0';
NUM1 := Strtofloat ( Edit4.Text);
NUM2 := Strtofloat ( Edit5.Text);
NUM3 := (NUM1 - NUM2);
NUM4 := FloatToStr(NUM3);
edit6.Text:= Formatfloat('#####0.00',strtofloat(NUM4));Nelson Filho
Curtidas 0
Respostas
Luiz
31/10/2014
Primeiro: Você pode utilizar o TMaskEdit ao invés do TEdit, dessa forma você configura a máscara dele para como você quiser, no caso para real, e não precisa ficar fazendo essas conversões no código.
Segundo: "Creio q seja pq ele mostre como float e se eu tento reconverter pra string o delphi nao aceita." - Porque você tenta reconverter para string?" - Não é mais fácil no banco de dados você criar o campo como float? e não como string para precisar reconverter ...
Segundo: "Creio q seja pq ele mostre como float e se eu tento reconverter pra string o delphi nao aceita." - Porque você tenta reconverter para string?" - Não é mais fácil no banco de dados você criar o campo como float? e não como string para precisar reconverter ...
GOSTEI 0
Nelson Filho
31/10/2014
Tem outro meio de fazer conta sem usar asssim?
Pq meu problema é só fazer gravar com o 00 quando o numero é redondo se a conta der 176,52 blz ele grava mas se der 176,00 ele só grava como 176......
NUM1 := Strtofloat ( Edit4.Text);
NUM2 := Strtofloat ( Edit5.Text);
NUM3 := (NUM1 - NUM2);
NUM4 := FloatToStr(NUM3);
edit6.Text:= Formatfloat('#####0.00',strtofloat(NUM4));Pq meu problema é só fazer gravar com o 00 quando o numero é redondo se a conta der 176,52 blz ele grava mas se der 176,00 ele só grava como 176......
GOSTEI 0
Joel Rodrigues
31/10/2014
Amigo, observe o que você está fazendo:
1) Converte o texto do edit4 para float. - OK
2) Converte o texto do edit5 para float. - OK
3) Faz uma operação matemática com os valores obtidos. - OK
4) Converte o resultado para string. - PRA QUÊ?
5) Pega aquele texto convertido e converte novamente para float, para então exibir no edit. - RETRABALHO
Você poderia manter as duas primeiras linhas e fazer simplesmente o seguinte:
ou ainda
Outra coisa: em termos de valores numéricos, 176 é a mesma coisa de 176,00. Então alguns bancos não colocam as casas decimais de valores inteiros, pois isso não é necessário. Você só precisa se preocupar com isso na hora de exibir o valor.
Caso você esteja usando algum dataset (TQuery, TADOQuery, etc), os TFields possuem uma propriedade chamada DisplayFormat, que você pode setar como #,##0.00.
1) Converte o texto do edit4 para float. - OK
2) Converte o texto do edit5 para float. - OK
3) Faz uma operação matemática com os valores obtidos. - OK
4) Converte o resultado para string. - PRA QUÊ?
5) Pega aquele texto convertido e converte novamente para float, para então exibir no edit. - RETRABALHO
Você poderia manter as duas primeiras linhas e fazer simplesmente o seguinte:
Edit6.Text := FormatFloat('#,##0.00', NUM3);ou ainda
Edit6.Text := FormatFloat('#,##0.00', (NUM1-NUM2));Outra coisa: em termos de valores numéricos, 176 é a mesma coisa de 176,00. Então alguns bancos não colocam as casas decimais de valores inteiros, pois isso não é necessário. Você só precisa se preocupar com isso na hora de exibir o valor.
Caso você esteja usando algum dataset (TQuery, TADOQuery, etc), os TFields possuem uma propriedade chamada DisplayFormat, que você pode setar como #,##0.00.
GOSTEI 0
Nelson Filho
31/10/2014
Sim eu entendi que com ,00 ou sem eles são o mesmo mas uso o Rave Design pra relatório e preciso que esses valores saim com ,00.
Tem como eu fazer algo no rave design pra por o #,##0.00 ?
E eu só uso ibquery ibupadate datasourse ibtransation
Tem como eu fazer algo no rave design pra por o #,##0.00 ?
E eu só uso ibquery ibupadate datasourse ibtransation
GOSTEI 0
Joel Rodrigues
31/10/2014
Procurou onde eu falei, no TField?
GOSTEI 0