Fórum Dúvida com formatação de valor lendo de um txt #513068

09/03/2015

0

Amigos!
Estou fazendo a leitura de um arquivo .txt, a informação vem neste formato:
00000000003786
Neste exemplo o valor seria 37,86, mais quando mando fazer a formatação o valor vem outro pois não está separado com uma virgula, alguém sabe como resolver isso?
Agradeço!

procedure TForm1.Button1Click(Sender: TObject);
 var
   Valor :Double;
begin
   valor := StrToFloatDef('0000000003786',0);
   ShowMessage(FloatToStr(Valor));
   //   valor := StrToFloatDef('37,86',0);
   Label1.Caption := FormatFloat('##,##0.00',Valor);
   Label2.Caption := FormatFloat('#,0.00',Valor);

end;
Itamar Souza

Itamar Souza

Responder

Post mais votado

09/03/2015

Tente acrescentar antes de associar o valor ao Label a seguinte linha: valor := valor / 100;

procedure TForm1.Button1Click(Sender: TObject);
var
  Centavos,Centena,Milhar, texto, Resultado :String;
  valor :Double;
begin
 
  valor := 0000000003786;
  Texto := FormatFloat('0000000000000', Valor);
  Centavos  := Copy( Texto, 12, 2  );
  Centena   := Copy( Texto, 10, 2  ) + ',' ;
  Milhar    := Copy( Texto,  9, 1  )  ;
  Resultado := Milhar + Centena +  Centavos;
 
  valor   := StrToFloat (Resultado) ;
//acrescente isso
  valor   := valor / 100;
  Label1.Caption := FormatFloat('#,0.00',Valor);
 
end;

Jaime Santos

Jaime Santos
Responder

Gostei + 1

Mais Posts

09/03/2015

Itamar Souza

Estou fazendo desta forma, alguém tem outra solução?
agradeço!


procedure TForm1.Button1Click(Sender: TObject);
var
  Centavos,Centena,Milhar, texto, Resultado :String;
  valor :Double;
begin

  valor := 0000000003786;
  Texto := FormatFloat('0000000000000', Valor);
  Centavos  := Copy( Texto, 12, 2  );
  Centena   := Copy( Texto, 10, 2  ) + ',' ;
  Milhar    := Copy( Texto,  9, 1  )  ;
  Resultado := Milhar + Centena +  Centavos;

  valor   := StrToFloat (Resultado) ;
  Label1.Caption := FormatFloat('#,0.00',Valor);

end;
Responder

Gostei + 0

09/03/2015

Jaime Santos

Não testei aqui, mas caso funcione seu código pode ser melhorado para:

procedure TForm1.Button1Click(Sender: TObject);
var
  sValor : String;
  fValor: Double;
begin  
  sValor := '0000000003786';
  fValor   := StrToFloat (sValor) / 100;
  Label1.Caption := FormatFloat('#,0.00',fValor);  
end;


ou

procedure TForm1.Button1Click(Sender: TObject);
var
  sValor : String;
begin  
  sValor := '0000000003786';
  Label1.Caption := FormatFloat('#,0.00', (StrToFloat (sValor) / 100));  
end;
Responder

Gostei + 0

09/03/2015

Itamar Souza

Agradeço jaime.

Deu certo!
Responder

Gostei + 1

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

Aceitar