Como saber o que não foi destruido antes de fechar o form
Olá amigos,
tenho um form de pdv com inúmeras funções que ja funcionando a bastante tempo.
Agora está acusando um erro ao finalizar o sistema de caixa inteiro.
Se eu não chamar esse form, finaliza tranquilo mesmo eu acessando outras funções como configuração do terminal, funções de ecf que estão fora desse form.
Acho eu que tem alguma coisa não destruída dentro do form, mas como saber o que ficou sem destruir?
O erro:
[/code]Exception EAccessViolation in module XXX.EXE at FFF???? Acces violation at address ?????????? Application.CreateForm(TfAbreMercado, fAbreMercado);
fAbreMercado.ShowModal;
fAbreMercado.Release ;
tenho um form de pdv com inúmeras funções que ja funcionando a bastante tempo.
Agora está acusando um erro ao finalizar o sistema de caixa inteiro.
Se eu não chamar esse form, finaliza tranquilo mesmo eu acessando outras funções como configuração do terminal, funções de ecf que estão fora desse form.
Acho eu que tem alguma coisa não destruída dentro do form, mas como saber o que ficou sem destruir?
O erro:
[/code]Exception EAccessViolation in module XXX.EXE at FFF???? Acces violation at address ??????????
Para chamar o form faço assim:
fAbreMercado.ShowModal;
fAbreMercado.Release ;
Obrigado pela atenção.
Aldus
Curtidas 0
Respostas
Devmedia
07/11/2008
Amigo aldus!
Tudo bem com tigo?
Olha primeiramente, eu te aconsselho a ir na ´munheca´ mesmo procurando componentes ou conexões que voce criou dinamicamente e logo depois não utilizou os velhos comandos Free, Nill para destruir os dados alocados na memória.
Umas possíveis soluções.
O Delphi te possibilita códigos como:
[code
If Assigned(Nome do componente, ou Form) then
Begin
{Oque quiser fazer}
end;
[/code]
Que se o componente ainda estiver alocado então execute uma função:
Quando acontece erros como este no meu desenvolvimento e não consigo localizar em qual componente esta o vazamento de memória é uma boa função para localizá-lo.
Outra é se voce utilizar o Delphi 2007 ou 2009 aonde já vem agregado o FastMM aonde voce pode ativar o recurso com o comando:
Agora eu ja tinha ouvido falar sobre isto:
Mas eu ainda não testei esta função UnregisterExpectedMemoryLeak
Qualquer dúvida ...
Tudo bem com tigo?
Olha primeiramente, eu te aconsselho a ir na ´munheca´ mesmo procurando componentes ou conexões que voce criou dinamicamente e logo depois não utilizou os velhos comandos Free, Nill para destruir os dados alocados na memória.
Umas possíveis soluções.
O Delphi te possibilita códigos como:
[code
If Assigned(Nome do componente, ou Form) then
Begin
{Oque quiser fazer}
end;
[/code]
Que se o componente ainda estiver alocado então execute uma função:
Quando acontece erros como este no meu desenvolvimento e não consigo localizar em qual componente esta o vazamento de memória é uma boa função para localizá-lo.
Outra é se voce utilizar o Delphi 2007 ou 2009 aonde já vem agregado o FastMM aonde voce pode ativar o recurso com o comando:
ReportMemoryLeaksOnShutdown := True;
Agora eu ja tinha ouvido falar sobre isto:
RegisterExpectedMemoryLeak
This should point to a function used to register an expected memory leak. If memory leak checking and reporting is not implemented in the replacement memory manager, this can point to a function that simply returns “False”.
UnregisterExpectedMemoryLeak
This should point to a function used to deregister a previously registered expected memory leak. If memory leak checking and reporting is not implemented in the replacement memory manager, this can point to a function that simply returns “False”.
For older memory managers that install themselves using the old TMemoryManager record, a default AllocMem, RegisterExpectedMemoryLeak and UnregisterExpectedMemoryLeak handler will be installed. The default AllocMem handler simply calls GetMem and then clears the memory block, while the default RegisterExpectedMemoryLeak and UnregisterExpectedMemoryLeak do nothing and return “false”.
http://dn.codegear.com/article/33416
Mas eu ainda não testei esta função UnregisterExpectedMemoryLeak
Qualquer dúvida ...
GOSTEI 0