Ir para conteúdo
  • Cadastre-se

dev botao

Erro de memoria ao Fechar o Aplicativo


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

Recommended Posts

Boa noite a todos

Gostaria de uma ajuda com um problema que estou obtendo em minha aplicação.

Ocorre que quando abro a aplicação e movimento qualquer operação seja ela

consulta, gravação, relatório etc, ao fechar o aplicativo, ele fecha direitinho,

no entanto quando faço qualquer movimentação com o componente da NFE,

seja ela uma consulta de xml, uma nfe enviada, cancelada ou inutilizada,

ao fechar o aplicativo ocorre um erro de memória que não tem sentido algum.

"Access Violation at address 00407D12 in module"

Eu uso configurar o acbrNFE no DM principal, logo quando abre o aplicativo

e o mesmo fica aberto o tempo todo no aplicativo.

Minha tela de NFE é um formulário com varias Guia PageControl e um outro

DM somente para os componentes de acesso ao banco que correspondem

as tabelas de NFE.

Já fiz de tudo para tentar resolver esse caso, inclusive pegeui uma copia

de um certificado de um cliente e instalei em minha máquina somente para

tirar a dúvida de alguns clientes que ficam me reclamando sobre o fato.

Antes que não tinha o certificado em minha maquina, obviamente que

não havia possibilidade de executar tais operações, mas depois que o instalei

de fato o erro está ocorrendo conforme reclama alguns clientes.

Já mandei destruir o componente antes de encerrar, já mudei as posições,

já usei FreeAndNil, já fiz o diabo e o erro continua somente quando abro

a aplicação e executo qualquer das quatro operações do certificado.

Atualmente o método OnClose do meu formulário Principal esta assim:

Tem algo que eu possa fazer para corrigir isso, será que voces tem alguma

idéia do ocorrido ?

Delphi7/Firebird 2.0/Zeos 6.6.5-stable/multicamada

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

Desculpe a ignorancia

mas não consigo fazer a operação usando o debug

vou usando F8 e de repente o sistema toma a dianteira e vai funcioando sozinho

mas uma coisa vou lhe dizer

depois que mato o formulario principal

Evento close do form

action:=cafree;

F_Principal:=NIL;

coloquei um

FATALEXIT(0)

e o erro parou de ocorrer

graças a Deus.

mas mesmo assim, vamos tentar descobrir proque ocorre o erro

obrigado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Por que você usa F_Principal:=NIL ?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

A mensagem de erro pode nos dar uma pista de onde se encontra o problema:

"Access Violation at address 00407D12 in module"

Com o seu programa rodando, vá no Delphi e use: Search -> Find Error.

Digite o endereço do Erro: "00407D12"

Veja que linha ele para...

Qual o Gerador de Relatório Utilizado para DANFE ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Bom dia

Seguem duas respostas

Uso o

F_Principal:=NIL;

para matar o Foirmulario, foi assim que eu aprendi

Fiz a verificação como o Daniel pediu e o erro conforme descrito na mensagem anterior

usando Find Error no delphi, me leva a:

Linha 851 da Unit AcbrECFDaruma.Pas

{ Verificando por erros }

if (copy(Result,1,2) = ':E') then

fsErro := StrToIntDef(copy(Result,3,2),0) ;

Será que precisarei desativar o ECF antes de Fechar o Sistema

O engraçado é que eu nem tenho o equipamento

todos os testes que faço com relação ao ECF, normalmente

vou até loja do cliente para testar, logicamente que faço

um teste no simulador da Bematech, mas comumente, desligo

qualquer configuração quando não estou trabalhando no assunto;

abraço

Link para o comentário
Compartilhar em outros sites

Daniel

Desculpe, segue a resposta a sua pergunta

Eu uso RAVECB

Uso também Criar um arquivo como Rave e dentro dele vários relatórios,

mas recentemente descobri a América, aliás, já sabia disso, só não tive muito

tempo para trabalha-lo: a questão é usar o RVSystem e programar os relatórios

via código, isso é a décima maravilha do mundo, pois a nona é o Delphi.

Mas não o Rave que me traz nenhum problema, já trouxe no inicio, mas conforme

uma configuração criando uma nova instancia do mesmo, esse erro anterior foi

resolvido.

Venho vagarosamente, trocando todos os relatórios dos meus sistemas para o

uso do RVSystem.

abraço

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não parece ser a linha do erro... nem sempre esse "Find Error" funciona...

O Delphi consegue gerar um log de "Call Stack" ? Temos isso no Lazarus (apesar da saida de texto não ser nada amigável)

Também seria útil alguma ferramenta para detectar vazamentos de memória (memory leaks)... (Mais uma vez não sei como fazer isso no Delphi, apenas no Lazarus... :( )

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia

Seguem duas respostas

Uso o

F_Principal:=NIL;

para matar o Foirmulario, foi assim que eu aprendi

Normalmente, isso não é necessário nos forms principais do projeto, o próprio Delphi cuida disso.

Do jeito que está, se em alguma parte posterior do código fizer alguma referencia a F_Principal, vai resultar em um Access Violation.

Você disse que vai usando F8 até o sistema tomar conta de tudo e continuar sozinho. Faz o seguinte, use F8 até pouco antes do sistema tomar conta de tudo, daí passe a usar o F7 (Step Into).

Isso deve permitir você entrar nos códigos mais internos.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Barbosa

Minha saida do form principal está assim:

############################

procedure TF_P.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Try

AcessoRegistro('S',dm.LoginFANTASIA.AsString,'0');

if f_entrada<>nil then f_entrada.Close;

if f_despesa<>nil then f_despesa.Close;

if f_receita<>nil then f_receita.Close;

if f_nfe<>nil then f_nfe.Close;

if f_VD<>nil then f_VD.Close;

if f_OS20<>nil then f_OS20.Close;

if f_FrenteCaixa<>nil then F_FRENTECAIXA.Close;

Action:=caFree;

F_P:=NIL;

// FatalExit(0);

except

showmessage('Erro ao Sair');

end;

end;

############################

Agora lhe afirmo, que se isso estiver preenchido ou não o erro ocorre assim mesmo,

tanto faz se tiver esse evento preenchido ou vazio, bastou eu usar qualquer operação

com certificado digital, consultando, enviando, cancelando ou inutilizando, o erro ocorre.

Porém quando coloco o FatalExit(0), belezinha, fecha bonitinho

abraço

Link para o comentário
Compartilhar em outros sites

  • Consultores

Você quer dizer que se você comentar a linha "F_P := nil;" o erro continua?

Se sim, então use o F7 como mencionei na resposta anterior. E descubra exatamente qual a linha que está gerando o erro.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

×
×
  • 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.