Dúvida com formatação de valor lendo de um txt

Delphi

09/03/2015

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

Curtidas 0

Melhor post

Jaime Santos

Jaime Santos

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;
GOSTEI 1

Mais Respostas

Itamar Souza

Itamar Souza

09/03/2015

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;
GOSTEI 0
Jaime Santos

Jaime Santos

09/03/2015

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;
GOSTEI 0
Itamar Souza

Itamar Souza

09/03/2015

Agradeço jaime.

Deu certo!
GOSTEI 1
POSTAR