Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao fechar Delphi com 2 componentes instanciados


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

Recommended Posts

Colegas, procurei no fórum mas não encontrei qualquer tópico com conteúdo semelhante.

Trabalho com Delphi e comecei a utilizar o ACBrNFe recentemente. Ocorre que num formulário eu instanciei dois componentes ACBrNFe e, ao sair do Delphi sempre era levantada uma exceção por violação de acesso.

Percebi que o problema está no OnCreate e no OnDestroy do componente:

constructor TACBrNFe.Create(AOwner: TComponent);

begin

  inherited Create(AOwner);


  FConfiguracoes     := TConfiguracoes.Create( self );

  FConfiguracoes.Name:= 'Configuracoes' ;

  {$IFDEF COMPILER6_UP}

   FConfiguracoes.SetSubComponent( true );{ para gravar no DFM/XFM }

  {$ENDIF}


  FNotasFiscais      := TNotasFiscais.Create(Self,NotaFiscal);

  FNotasFiscais.Configuracoes := FConfiguracoes;

  FWebServices       := TWebServices.Create(Self);


  if FConfiguracoes.WebServices.Tentativas <= 0 then

     FConfiguracoes.WebServices.Tentativas := 5;

  {$IFDEF ACBrNFeOpenSSL}

    if FConfiguracoes.Geral.IniFinXMLSECAutomatico then

     NotaUtil.InitXmlSec ; // <--- DEVERIA SER OBSERVADO SE ESTOU EM TEMPO DE PROJETO (csDesigning in ComponentState)

  {$ENDIF}

  FOnGerarLog := nil ;

end;
destructor TACBrNFe.Destroy;

begin

  FConfiguracoes.Free;

  FNotasFiscais.Free;

  FCartaCorrecao.Free;

  FWebServices.Free;

  {$IFDEF ACBrNFeOpenSSL}

    if FConfiguracoes.Geral.IniFinXMLSECAutomatico then

      NotaUtil.ShutDownXmlSec ; // <--- DEVERIA SER OBSERVADO SE ESTOU EM TEMPO DE PROJETO (csDesigning in ComponentState)

  {$ENDIF}

  inherited;

end;

não sei se este é o melhor canal para passar essa informação, então peço que movam o tópico para o local correto.

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

Amigos, tive um problema parecido, eu tinha 2 forms que poderiam ser abertos ao mesmo tempo pelo usuario, e infelizmente cada um deles tinha um componente do acbr.

o erro era o mesmo mencionado.

Qual a melhor solucao? ter somente 1 componente num datamodule.

Agora, se vc infelizmente por um motivo ou outro nao pode fazer isso, eis o que eu fiz:


//------------------------- 28/10/2010 ----------------------------//

// Alterei a linha 354 da unit ACBRNFeUtil, comentando-a, para que

// não desse mais erro de access violation na hora de fechar o form

// ele dava o erro justamente ao executar essa funcao comentada.

Nao sei se ainda é esse numero de linha, mas a linha é essa:

    { Shutdown xmlsec library }

     xmlSecShutdown();

E parou de dar o erro ;)

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4480 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.