Elton, já para sua revisão, tive de mexer em mais código, consegui fazer testes em uma prévia de validador da própria RFB, segue conforme abaixo:
Na unit UACBrLCDPR, deu problema com o DELIMITADOR que na última coluna não pode ser gerado, ou seja o último caracter da linha não pode ser o piper conforme documentação, sendo assim, foi criado um parametro na função abaixo, seguindo outros componentes próprio ABCR que geram txt
function AddCampo(const Value : String; AddDelimiter: Boolean = True ) : String;
function TACBrLCDPR.AddCampo(const Value: String; AddDelimiter: Boolean): String;
begin
Result := Trim(Value);
if AddDelimiter then
Result := Result + Delimitador;
end;
Com isso ainda na unit UACBrLCDPR nas funções de WRITEBLOCOS na ultima chamada AddCampo() foi passado o parametro FALSE.
Na unit BlocoQ e RegistroQ200 foi removido o valor PAIS, não consta mais na documentação.
Olavo
UACBrLCDPR.pas
BlocoQ.pas
RegistroQ200.pas