Erros de memoria - Access Violation - Dicas?
Meu sistema está dando alguns erro sem aparente explicação:
São mensagens que as vezes aparecem e as vezes não. Alguem poderia me dar uma explicação melhor sobre isso para que eu possa procurar a solução.
Obrigado :roll:
Access violation at address 004547F9 in module ´PROGCONTROL.EXE´. Read of address FFFFFFFF Access violation at address 0041B241 in module ´PROGCONTROL.EXE´. Read of address FFFFFFFF Access violation at address 00000009. Write of address 033A79D1 Access violation at address 72507365. Read of address 72507365 Access violation at address 00000013. Write of address 030A1A9C Access violation at address 00000009. Write of address 033A672D
São mensagens que as vezes aparecem e as vezes não. Alguem poderia me dar uma explicação melhor sobre isso para que eu possa procurar a solução.
Obrigado :roll:
Marbravo
Curtidas 0
Melhor post
Massuda
19/01/2005
O que não soluciona nada como remover da memoria?
Não entendi o que você quis dizer com ´remover da memória´... tanto faz Action = CaFree no OnClose ou Form.Release já que ambos destroem o form e, consequentemente, liberam a memória associada com o form.
GOSTEI 1
Mais Respostas
Bruno_fantin
18/01/2005
Esse erro quer dizer... ´Você está tentando acessar um objeto que não existe...´
Para arrumar isso você tem que rever todo o codigo do seu programa para ver o que está fazendo de errado...
Em algum lugar você está matando um objeto e depois está tentando usar ele...
Para arrumar isso você tem que rever todo o codigo do seu programa para ver o que está fazendo de errado...
Em algum lugar você está matando um objeto e depois está tentando usar ele...
GOSTEI 0
Massuda
18/01/2005
Geralmente isso está relacionado com tentativas de utilizar objetos que já foram destruídos (automaticamente ou não) em algum do programa.
Para facilitar, tente determinar onde o erro está ocorrendo. Para isso:[list:8cae30a2d8][*:8cae30a2d8]marque as opções de debug em Project/Options/Compiler/Debugging[*:8cae30a2d8]dê um build (menu Project/Build) no seu programa[*:8cae30a2d8]inicie a execução do seu programa[*:8cae30a2d8]volte no Delphi[*:8cae30a2d8]no menu Search/Find Error, informe o endereço do erro (por exemplo 004547F9)[/list:u:8cae30a2d8]Com um pouco de sorte, o Delphi irá mostrar a linha problemática.
Para facilitar, tente determinar onde o erro está ocorrendo. Para isso:[list:8cae30a2d8][*:8cae30a2d8]marque as opções de debug em Project/Options/Compiler/Debugging[*:8cae30a2d8]dê um build (menu Project/Build) no seu programa[*:8cae30a2d8]inicie a execução do seu programa[*:8cae30a2d8]volte no Delphi[*:8cae30a2d8]no menu Search/Find Error, informe o endereço do erro (por exemplo 004547F9)[/list:u:8cae30a2d8]Com um pouco de sorte, o Delphi irá mostrar a linha problemática.
GOSTEI 0
Paulo_amorim
18/01/2005
Olá
Lembrando que o acesso a objetos ainda não criados também dá esse erro. Assim, erros em eventos OnCreate , bem como acesso a objetos que devem ser instanciados em tempo de execução mas não o foram, gerarão esse erro.
Até+
Lembrando que o acesso a objetos ainda não criados também dá esse erro. Assim, erros em eventos OnCreate , bem como acesso a objetos que devem ser instanciados em tempo de execução mas não o foram, gerarão esse erro.
Até+
GOSTEI 0
Marbravo
18/01/2005
O erro é que estou usando o Vcl Skin e quando no onclose eu coloco para remover da memoria ( Freeandnil(Self); ) ele da o erro. Debugando vi que quando eu destruia ele procurava um arquivo que não tenho WinSkinForm.pas...
e agora?
O que fazer?
Com Action := CaFree funciona mas com Freeandnil(Self) da erro...
Solução?
Dicas?
Agradeço desde já
e agora?
O que fazer?
Com Action := CaFree funciona mas com Freeandnil(Self) da erro...
Solução?
Dicas?
Agradeço desde já
GOSTEI 0
Marbravo
18/01/2005
O erro é que estou usando o Vcl Skin e quando no onclose eu coloco para remover da memoria ( Freeandnil(Self); ) ele da o erro. Debugando vi que quando eu destruia ele procurava um arquivo que não tenho WinSkinForm.pas...
e agora?
O que fazer?
Com Action := CaFree funciona mas com Freeandnil(Self) da erro...
Solução?
Dicas?
Agradeço desde já
e agora?
O que fazer?
Com Action := CaFree funciona mas com Freeandnil(Self) da erro...
Solução?
Dicas?
Agradeço desde já
GOSTEI 0
Paulo_amorim
18/01/2005
Olá
Ele está tentando se destruir enquanto está dentro de um evento dele mesmo! Simulei aqui e também deu AV
Tente colocar a liberação no Form que chamou esse seu form, e não dentro dele mesmo:
Espero que ajude
Até+
Ele está tentando se destruir enquanto está dentro de um evento dele mesmo! Simulei aqui e também deu AV
Tente colocar a liberação no Form que chamou esse seu form, e não dentro dele mesmo:
SeuForm := TSeuForm.Create(Self); SeuForm.ShowModal; SeuForm.Free;
Espero que ajude
Até+
GOSTEI 1
Massuda
18/01/2005
Se seu form não for modal e você precisa que seu form se auto-destrua (´suicídio´), use a procedure TForm.Release ao invés de chamar TForm.Free.
GOSTEI 0
Marbravo
18/01/2005
Eu estou usando formularios MDI (MDIChild e MDIForm) por isso não posso usar ShowModal e estou usando Action := CaFree no Onclose, que creio eu seja a mesma coisa que Form.Release...
O que não soluciona nada como remover da memoria?
?
Obrigado
O que não soluciona nada como remover da memoria?
?
Obrigado
GOSTEI 0
Aroldo Zanela
18/01/2005
Colega,
A forma que está utilizando no OnClose do formulário filho (MDI) está correta, ou seja, Action := caFree. Entretanto, acredito que o problema esteja ocorrendo antes disso e como já mencionado, está ocorrendo em face de tentar utilizar um objeto antes de ser criado ou após ter sido liberado. Pode adicionar um fragmento do código para verificarmos melhor?
A forma que está utilizando no OnClose do formulário filho (MDI) está correta, ou seja, Action := caFree. Entretanto, acredito que o problema esteja ocorrendo antes disso e como já mencionado, está ocorrendo em face de tentar utilizar um objeto antes de ser criado ou após ter sido liberado. Pode adicionar um fragmento do código para verificarmos melhor?
GOSTEI 0
Aroldo Zanela
18/01/2005
Colega,
Agora que li completamente todas as mensagens, acredito que o problema seja no componente de SKIN. Porém, só para ratificar, o uso de caFree no OnClose de formulários MDI está correto.
Agora que li completamente todas as mensagens, acredito que o problema seja no componente de SKIN. Porém, só para ratificar, o uso de caFree no OnClose de formulários MDI está correto.
GOSTEI 0
Domingosafn
18/01/2005
Como posso verificar se um objeto existe na memória, antes de acessá-lo, evitando o erro? No meu caso são índices de vetores, preciso saber se há threads alocadas neles.
Valeu.
Valeu.
GOSTEI 0
Amauri Alves
18/01/2005
Bom dia,
Aproveitando o post gostaria de colocar uma situação que pelo menos para mim é inovadora: Ele está me dando erro de violação de acesso antes de executar qualquer coisa no sistema, coloquei o projeto inteiro para debugar, ele me da este erro antes de qualquer create, antes de executar qualquer linha do projeto e em função disto não consigo ter ideia de onde pode estar este erro, alguém já passou por algo semelhante?
Aproveitando o post gostaria de colocar uma situação que pelo menos para mim é inovadora: Ele está me dando erro de violação de acesso antes de executar qualquer coisa no sistema, coloquei o projeto inteiro para debugar, ele me da este erro antes de qualquer create, antes de executar qualquer linha do projeto e em função disto não consigo ter ideia de onde pode estar este erro, alguém já passou por algo semelhante?
GOSTEI 0