Estamos processando retorno do Banco Bradesco com 400 posições;
No método TACBrBancoClass.LerRetorno400 no momento de definir o código do motivo gera um laço de 5 repetições para ler blocos de 2 caracteres iniciando na posição 319.
Na última volta do laço ele acaba pegando no nosso caso o valor '2 ';
A instrução de definição da variável CodMotivo é:
CodMotivo := StrToInt(IfThen(copy(Linha,MotivoLinha,2) = ' ','00',copy(Linha,MotivoLinha,2)));
Isso acaba retornando uma exceção: ' 2' is not a valid integer value;
estamos fazendo alguma leitura errada ou é algo realmente a ser resolvido?
VER ARQUIVO.RET (Em anexo).
Se não estivermos fazendo nada errado achamos que pode haver algum problema com o fonte:
Fonte da Unit unit ACBrBoleto;
procedure TACBrBancoClass.LerRetorno400(ARetorno: TStringList);
...
MotivoLinha := 319;
for i := 0 to 4 do
begin
CodMotivo := StrToInt(IfThen(copy(Linha,MotivoLinha,2) = ' ','00',copy(Linha,MotivoLinha,2)));
...
MotivoLinha := MotivoLinha + 2; //Incrementa a coluna dos motivos
end;
...
end;
Linha do Arquivo de retorno Bradesco 400 posiçoes
02RETORNO01COBRANCA 00000000000000051978PS.SECURITIZADORA DE CREDITOS 237BRADESCO 1704220160000000001 180422 000001
10240974616000188000000202960010434710071677PROFACW 0000000000000353853P000000000000000000000000020614042272261-07 00000353853P00000000140422000000004854310402261 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000485430000000000000000000004854300000000000000000000000000 140422 26910511000134JOSE GENIVALDO OLIVEIRA 34000002
posição 319 a 329 da linha detalhe
140422
3 3 3 3 3
1 2 2 2 2
9 1 3 5 7
i = 0 MotivoLinha = 319
copy(Linha,MotivoLinha,2) = ' '
i = 1 MotivoLinha = 321
copy(Linha,MotivoLinha,2) = ' 1'
1 = 2 MotivoLinha = 323
copy(Linha,MotivoLinha,2) = '40'
i = 3 MotivoLinha = 325
copy(Linha,MotivoLinha,2) = '42'
i = 4 MotivoLinha = 327
copy(Linha,MotivoLinha,2) = '2 '
Não há método override para o método da classe primária na Unit ACBrBancoBradesco;
VER DETALHEACBR.TXT (Em anexo).
ARQUIVO.RET
DetalheACBR.txt