Olá,
Atualizei recentemente o ACBR e ao comparar os arquivo gerados antes e depois da atualização verifiquei uma pequena diferença no valor gerado para o campo "NUM_CONT" na linha R05.
Antes gerava "042165" depois da atualização passou a gerar "421650", completando o valor com o zero a direita e não a esquerda.
Avaliando o código verifiquei a seguinte alteração no código:
Antes era:
"LFill(RegR04.NUM_CONT, 6) +"
e agora é :
"LFill( IfThen(NUM_CONT=-1, RegR04.NUM_CONT, NUM_CONT), 6) +"
Ao debugar vi que o método LFILL que é invocado depois da alteração é o com a assinatura :
"LFill(Value: Currency; Size: Integer; Decimal: Integer = 2; Nulo: Boolean = false; Caracter: Char = '0'; Mascara: String = ''): String; overload;";
e não com a assinatura
"LFill(Value: Integer; Size: Integer; Nulo: Boolean = false; Caracter: Char = '0'): String; overload;"
Para contornar eu fiz a seguinte alteração de:
"LFill( IfThen(NUM_CONT=-1, RegR04.NUM_CONT, NUM_CONT), 6) +"
para:
"LFill( IfThen(NUM_CONT=-1, IntToStr(RegR04.NUM_CONT), IntToStr(NUM_CONT)), 6) +"
Mas eu acredito que não seja a melhor forma, outra coisa que vi é que o método "ifthen" que é chamado e o "function IfThen(AValue: Boolean; const ATrue: Char; AFalse: Char): Char; overload;" que esta na classe "ACBrSpedUtils" e não na classe "ACBrUtil".
Acredito que se passar a usar o IFTHEN do ACBRUtil já deve corrigir isso pq ele tem uma assinatura que recebe dois valores inteiros e que retorna um iteiro, diferente dos que hj estão disponíveis no "ACBrSpedUtils".
No aguardo.
Obrigado pela atenção.