Ir para conteúdo
  • Cadastre-se

dev botao

Ajuste pcnNFe.pas


Ver Solução Respondido por antoniojmsjr,
  • Este tópico foi criado há 936 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Solution
Postado

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

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.