Exception class EAccessViolation with message ´Access violat

Delphi

07/02/2008

O que pode ser esse erro
---------------------------
Debugger Exception Notification
---------------------------
Project ERP.exe raised exception class EAccessViolation with message ´Access violation at address 00780998 in module ´ERP.exe´. Read of address 00000000´. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------

O que pode ser?


Jpauloss

Jpauloss

Curtidas 0

Respostas

Onjahyr

Onjahyr

07/02/2008

Assim fica dificil de saber né?

Debuga ele pelo Delphi e vê a rotina que tá fazendo isso!!!!

...e diz o que você faz com esse aplicativo, ficará mais fácil...


GOSTEI 0
Jpauloss

Jpauloss

07/02/2008

Assim fica dificil de saber né? Debuga ele pelo Delphi e vê a rotina que tá fazendo isso!!!! ...e diz o que você faz com esse aplicativo, ficará mais fácil...

Só se debugar todo o programa, como faz?
Sei debugar marcando os pontos que quero e apertando F7.
Como seria passar por todas as linhas do programa?


GOSTEI 0
Massuda

Massuda

07/02/2008

EAccessViolation
Geralmente isso está relacionado com tentativas de utilizar objetos que não foram criados ou que já foram destruídos (automaticamente ou não) em algum ponto do programa.

Para facilitar, tente determinar onde o erro está ocorrendo. Para isso:[list:daed0285b4][*:daed0285b4]marque as opções de debug em Project/Options/Compiler/Debugging[*:daed0285b4]dê um build (menu Project/Build) no seu programa[*:daed0285b4]inicie a execução do seu programa[*:daed0285b4]volte no Delphi[*:daed0285b4]no menu Search/Find Error, informe o endereço do erro (esse endereço está na mensagem de erro)[/list:u:daed0285b4]Com um pouco de sorte, o Delphi irá mostrar a linha problemática.


GOSTEI 0
Jpauloss

Jpauloss

07/02/2008

[quote:5315b051e5]EAccessViolation
Geralmente isso está relacionado com tentativas de utilizar objetos que não foram criados ou que já foram destruídos (automaticamente ou não) em algum ponto do programa.

Para facilitar, tente determinar onde o erro está ocorrendo. Para isso:[list:5315b051e5][*:5315b051e5]marque as opções de debug em Project/Options/Compiler/Debugging[*:5315b051e5]dê um build (menu Project/Build) no seu programa[*:5315b051e5]inicie a execução do seu programa[*:5315b051e5]volte no Delphi[*:5315b051e5]no menu Search/Find Error, informe o endereço do erro (esse endereço está na mensagem de erro)[/list:u:5315b051e5]Com um pouco de sorte, o Delphi irá mostrar a linha problemática.[/quote:5315b051e5]
A linha que busca é essa
procedure TFrmPrincipal.ParametroInterno(var Msg: TMsg; var Handled: Boolean);
Var
  i: SmallInt;

begin

 // o "TRY" é necessário para evitar mensagens de erros em formulários MDI e SDI
 Try

     // Não aplicar sobre os seguintes componentes:
   If not ((Screen.ActiveControl   is TCustomMemo)        or (Screen.ActiveControl  is TCustomGrid)   or
            (Screen.ActiveControl  is TComboBox)          or (Screen.ActiveControl  is TDBComboBox)   or
            (Screen.ActiveControl  is TDBLookupComboBox)  or (Screen.ActiveControl  is TDBRadioGroup) or
            (Screen.ActiveControl  is TRadioGroup)        or (Screen.ActiveControl  is TButton)       or
            (Screen.ActiveControl  is TBitBtn)            or (Screen.ActiveControl  is TListBox)      or
            (Screen.ActiveForm.ClassName = ´TMessageForm´)) then

O ponteiro fica no antes do if not.
Que faço?


GOSTEI 0
Massuda

Massuda

07/02/2008

Screen.ActiveForm e Screen.ActiveControl podem ser nil durante a execução do programa. Seu código não testa essa situação.


GOSTEI 0
Jpauloss

Jpauloss

07/02/2008

Screen.ActiveForm e Screen.ActiveControl podem ser nil durante a execução do programa. Seu código não testa essa situação.

Me dê essa ajudinha aê to começando agora, comprei esse código fonte e estou querendo aprender...
Como faço pra resolver?


GOSTEI 0
Djjunior

Djjunior

07/02/2008

if Screen.ActiveForm = nil then
exit;


GOSTEI 0
Jpauloss

Jpauloss

07/02/2008

if Screen.ActiveForm = nil then exit;

Obrigado por mais uma aula.


GOSTEI 0
POSTAR