Jump to content

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

Registro H010 Gera Apenas 4 Decimais Por Causa Do Parâmetro Ser Currency No Lfill


Hugototall
  • Este tópico foi criado há 2928 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá!
 

Na geração do registro H010 o campo VL_UNI mesmo se informando valores com 6 casas decimais, ele gera o valor considerando apenas 4 decimais, devido ao parâmetro ser do tipo currency, e depois utilizando o FormatCurrency ele adiciona dois zeros para completar as 6 decimais exigidas pelo campo.

 

Eu corrigi o problema da seguinte forma :

 

 

function TACBrTXTClass.LFill(Value: Double;
                        Size: Integer;
                        Decimal: Integer = 2;
                        Nulo: Boolean = false;
                        Caracter: Char = '0';
                        Mascara: String = ''): String;
var
intFor, intP: Integer;
strCurMascara: string;
begin
  strCurMascara := FCurMascara;
  // Se recebeu uma mascara como parametro substitue a principal
  if Mascara <> '' then
     strCurMascara := Mascara;

  /// Se o parametro Nulo = true e Value = 0, será retornado '|'
  if (Nulo) and (Value = 0) then
  begin
     Result := FDelimitador;
     Exit;
  end;
  intP := 1;
  for intFor := 1 to Decimal do
  begin
     intP := intP * 10;
  end;
  if strCurMascara <> '' then
     Result := FDelimitador + FormatFloat(strCurMascara, Value)
  else
     Result := LFill(Trunc(Value * intP), Size, Nulo, Caracter);
end;



 

Link to comment
Share on other sites

  • Consultores

Realmente, a precisão de mais de 4 casas decimais não é compatível com o tipo Currency.

Alguém acha que poderia haver algum problema nesta alteração em outros componentes que usam o LFill?

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

Ei Elton, acredito que não ha problema algum nessa alteração, ou seja não consegui mentalmente detectar algum ponto que possa gerar problema.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link to comment
Share on other sites

  • Consultores

Também não lembro de nenhum problema que possa ser gerado. Assim, se não houver nenhuma manifestação contrária vou subir a correção para o SVN.

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • 4 weeks later...
  • Consultores

Subi as alterações para o SVN na Revisão  6149. Com um pequeno ajuste, usei Extended ao invés de Double.

O motivo é que Extended possui uma precisão bem maior que Double.

Pelo que vi está tudo certo.

Favor testar e reportar qualquer problema.

Obrigado

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Este tópico foi criado há 2928 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.