Boa tarde, realizei um ajuste na unit pcnNFe.pas para corrigir um erro Invalid pointer operation, esse erro acontece:
TEnviarNFCe = class
private
FDocumento: TNFe;
public
constructor Create;
destructor Destroy; override;
procedure ProcessarNFCe;
procedure EnviarNFCe(pACBrNFe: TACBrNFe);
end;
constructor TProcessarIniNFCe.Create;
begin
FDocumento := TNFe.Create;
end;
destructor TProcessarIniNFCe.Destroy;
begin
FDocumento.Free; //QUANDO FINALIZA, GERA UM ERRO AO LIBERAR FDet DA CLASSE TNFe.Destroy;
end;
procedure TProcessarIniNFCe.ProcessarNFCe;
begin
FDocumento.Ide.cUF := 'RS';
FDocumento.Ide.serie := 70;
FDocumento.Ide.nNF := 1000;
...
...
end;
procedure TProcessarIniNFCe.EnviarNFCe(pACBrNFe: TACBrNFe);
begin
pACBrNFe.NotasFiscais.Add.NFe.Assign(Self.FDocumento);
//AQUI TEM OUTROS PROCESSOS PARA PODER ENVIAR A NFC-e
{
...
...
}
//NO FINAL DE TUDO É LIMPO
pACBrNFe.NotasFiscais.Clear;
end;
Este é um resumo simples do processo que eu realizo, eu acredito o que esteja acontecendo é que o assing do TDetCollection tá utilizando a referência do objeto para salva na lista e quando realiza o pACBrNFe.NotasFiscais.Clear está removendo e liberando o objeto. Quando eu libero o objeto FDocumento.Free está gerando o erro Invalid pointer operation.
pcnNFe.pas