Ir para conteúdo
Fórum Script Brasil
  • 0

Exception Eaccess Violation


António44

Pergunta

Aconteceu-me pela 1ª vez um erro estranho que é o seguinte.

Os meus programas de base de dados não rodam em máquinas onde tenha o Win XP SP3 ??? estranho porque no meu pc onde os compilo em delphi e que tb tem XP SP3 eles rodam sem problemas...??? Os Erros são os seguintes .

Exception Eaccess violation in module agenda.exe at 000C00B8 Access violation at adress 064C00B8 in module ''agenda.exe'' write of adress 004F00A4.

Outro erro é.

Exception Eprivilege in module agenda.exe previleged instruction...??? ora não sei o que poderá ser isto,visto que testei em vários pcs inclusive com o Vista Home e vista Ultimate e funcionam bem.

Só nos XP SP3 é que falha... mas o estranho é que no meu XP SP3 eles rodam bem... e testei vários aplicativos todos dão erro, todos os que são Base de dados ????? o BDE fica bem configurado...não é um erro por causa do BDE...já não tenho ideias.

Se puderem ajudar ai com alguma sugestão agradeço.

Abraços.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Os meus programas de base de dados não rodam em máquinas onde tenha o Win XP SP3 ??? estranho porque no meu pc onde os compilo em delphi e que tb tem XP SP3 eles rodam sem problemas...??? Os Erros são os seguintes .

Exception Eaccess violation in module agenda.exe at 000C00B8 Access violation at adress 064C00B8 in module ''agenda.exe'' write of adress 004F00A4.

uma das atualizações do windows ( KB... ) bloqueia ( ainda não sei qual é ) o executavel em delphi que usa banco de dados .

se voce instalar o windows xp sp3 e não fizer as atualizações ele funciona

Exception Eprivilege in module agenda.exe previleged instruction...??? ora não sei o que poderá ser isto,visto que testei em vários pcs inclusive com o Vista Home e vista Ultimate e funcionam bem.

EPrivilege é a classe de exceção para violações de privilégio de processador.

Unit

sysutils

Descrição

EPrivilege é elevado quando uma aplicação tentar executar uma instrução de processador que é inválido para o nível de privilégio de processador atual.

Como um descendente de EExternal, EPrivilege salva a janela de exceção em um registro (se há um) em sua estrutura de dados ExceptionRecord.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Só nos XP SP3 é que falha... mas o estranho é que no meu XP SP3 eles rodam bem... e testei vários aplicativos todos dão erro, todos os que são Base de dados

Sugestão se voce tiver tempo e paciência:

no micro que tem o XP SP3 que roda em um que tambem tem o XP SP3 e não roda... verifique na lista dos KBs o que tem de diferente e achará a resposta.

Ouma outra sugestão: é ir deletando os KBs um por um até achar o que causa este tipo de problema

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Só nos XP SP3 é que falha... mas o estranho é que no meu XP SP3 eles rodam bem...
António44, por acaso no seu computador sua conta de usuário pertence a categoria Administrador e a dos outros computadores os usuários não pertencem a ela?

Em teoria, se houver alguma nova atualização sobre o pacote SP3, basta que você use o recurso Windows Update para baixar qualquer atualização que esteja pendente.

No site da Microsoft tem uma atualização pós SP3: Actualização de Segurança para o Windows XP Service Pack 3 (KB952069)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Vou mesmo ter que fazer isso ai que você fala...mas poque será que isto acontece,será alguma má fé da Microsoft ???

Voce sabia que uma das atualizações é para verificar se o seu windows não é pirata ? e se for esta atualização altera algumas coisas no seu micro ?

existe uma outra que abre o seu micro para a microsoft, ou seja, eles podem bisbilhotar o seu micro sem que voce saiba

Eles falam que é para evitar invasões na sua máquina, mas não falam que eles mesmos podem fazer isso

Com relação ao BDE não creio que foi de propósito, mas ao alterar as diretivas de administrador, talvez tenham bloqueado esse tipo de acesso. Vale lembrar que se voce quiser rodar um aplicativo em delphi como usuário de uma conta sem previlégios de administrador, vai ter problemas.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
António44, por acaso no seu computador sua conta de usuário pertence a categoria Administrador e a dos outros computadores os usuários não pertencem a ela?

Eu verifiquei isso nos outros computadores e todos eles tem privilégio de administrador... em relação á actualização que o Micheus sugeriu,vou instalar e depois testar a ver se chego a alguma conclusão.

Obrigado ai pra vocês.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Faça uma verificação por virus também amigo, Existe um virus novo que desabilita as diretivas de segurança de usuarios, inclusive do proprio administrador. Para reverter isso somente uma reparação manual em linux ou uma formatação e reinstalação do sistema. Eu até agora não tive problema algum com nenhuma versão do windows em minhas apliações, os meus programas rodam até em linux, tenho uma distribuição propria com o wine que emula perfeitamente apliações for windows, e todas as minhas aplicações também rodam nele com todos os recursos gráficos e impressão, compartilhamentos e acessos a diversos banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

Voltando aqui ao problema...fiz tudo o que me indicaram e nada.

Resolvi modificar um aplicativo onde mudar uma report do auto Create Forms logo na execucão do Aplicativo para ser criada depois com um botão de previsualizacão... o erro inicial desapareceu o programa rodou logo bem,agora quando chamo o preview da report é que dá erro...portanto aqui é que está o erro na Quikreport ou no SQL ???? mas nesta report eu não uso o SQL e o erro é o mesmo.

Exception Eaccess violation in module agenda.exe at 000C00B8 Access violation at adress 064C00B8 in module ''agenda.exe'' write of adress 004F00A4.

procedure TForm1.Button1Click(Sender: TObject);
begin
try
with Report1 do begin
Report1:=TReport1.create(self);
....
....
....
Report1.preview
end
finally
free
end;
end;

Será que pode ser algo no código agradecia uma olhada ai dos amigos...mas no meu PC funciona bem?????

Abraço.

Editado por António44
Link para o comentário
Compartilhar em outros sites

  • 0
(...) o erro inicial desapareceu o programa rodou logo bem,agora quando chamo o preview da report é que dá erro...portanto aqui é que está o erro na Quikreport ou no SQL ???? mas nesta report eu não uso o SQL e o erro é o mesmo.
Este SQL a que você se refere seria uso de datasets (seja table ou query)? Se for, acho que voce mesmo já respondeu a pergunta - parece claro que seja algo relacionado ao QuickReport apenas.

António44, olhando seu exemplo, parece-me que para criar seus relatórios você usa a opção do menu File->New->Other->New->Report. Seria isto mesmo?

Este exemplo que você citou por último, você saberia dizer se o erro ocorreu no momento em que você chama o Create ou o Preview? Se não souber, tente verificar colocando break-points nestas linhas e observe em que ponto a exceção ocorrerá.

Dois comentário sobre o fragmento do código que você postou:

1) não é muito lógico que você use o with <variável dinâmica> do antes que você tenha alocado memória para ela (mesmo que isto não cause erro - pelo menos no seu exemplo). O correto seria a sequência:

Report1 := TReport1.create(self);
with Report1 do 
begin
  :
end;
2) a lógica no uso do try..except..end não está muito adequada. Digamos que colocando o Create do relatório dentro do Try e usando o Finally para liberar a memória do objeto não é o correto. Uma coisa é você tratar a instanciação da classe outra é tratar algum erro que possa ocorrem enquanto você usa o objeto. Se for tratar apenas erros na execução do relatório, o objeto tem que ter sido criado antes do "tratador":
procedure TForm1.Button1Click(Sender: TObject);
begin
  Report1:=TReport1.create(self);
  with Report1 do
  try
    :
    :
    Report1.preview
  finally
    free
  end;
end;
observe que criamos o objeto Report1, e depois tentamos (try) usar seu(s) metodo(s) e, havendo erro ou não, finalmente (finally) liberamos a memória alocada para ele. Já se fossemos tratar a criação do objeto também (o que é pouco usual), teríamos que ampliar o código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    Report1:=TReport1.create(self);
    with Report1 do
    try
      :
      :
      Report1.preview
    finally
      free
    end;
  except
    ShowMessage('Não foi possível criar o relatório!');
  end;
end;

agora, estamos tentando (try-1) criar o relatório, se houver um erro neste processo (except), mostraremos a mensagem (a variável não foi alocada nesta condição). Caso não haja erro (a variável foi alocada), passaremos a diante e tentaremos (try-2) mostrar o relatório. Ocorra um erro ou não (finally), liberaremos a memória alocada para o objeto.

Lembre-se que qualquer linha de comando que esteja entre o bloco try...finally ou try...except, que possa causar uma exceção resultará no desvio para o bloco finally...end ou except...end. Assim, quanto mais comandos você quizer tratar, mais blocos try terá que aninhar.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Este exemplo que você citou por último, você saberia dizer se o erro ocorreu no momento em que você chama o Create ou o Preview? Se não souber, tente verificar colocando break-points nestas linhas e observe em que ponto a exceção ocorrerá.
Micheus, eu estive aqui a fazer uns testes e cheguei a conclusão que o erro é logo no Create do Report ,desabilitei a linha do Report.Preview e o erro continua dai que antes quanto estava em auto create Form a aplicação dava erro logo no executar na hora que ia criar os Report.?
António44, olhando seu exemplo, parece-me que para criar seus relatórios você usa a opção do menu File->New->Other->New->Report. Seria isto mesmo?

Neste report eu usei assim como você fala ai ...->New->Other->New->Report ,mas tem outros que usei um form e adicionei um QuickRep e dá o mesmo erro . Haverá maneira de contornar isto? agradeço a vocês ai Micheus,Jhonas e outros amigos ai que possam ter alguma ideia.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
eu estive aqui a fazer uns testes e cheguei a conclusão que o erro é logo no Create do Report ,desabilitei a linha do Report.Preview e o erro continua dai que antes quanto estava em auto create Form a aplicação dava erro logo no executar na hora que ia criar os Report.

Antonio44, lembro que você usa uma versão antiga do Delphi (acho que é a 3). Qual é a versão do QuickReport que você está usando com ele? (você vê isso, utilizando o menu de contexto do componente TQuickRep). Supondo que seja o D3, a última versão do quick para ele seria a 2.0K (download da versão Standard - outras versões de Delphi, procurar aqui).

Como o erro está no Create e não no Preview, fica descartada um dos problemas relacionados a variável de ambiente (se não me engano, inclusive, você já tratou desta questão em outro tópico). Então, lembrei que havia uma outra condição em que já ocorreu erro similar. Trata-se de quando não há uma impressora configurada no computador (nas versões mais recentes do quick, parece-me que isto não ocorre mais).

Supondo que funciona no seu computador porque haja uma impressora instalada. E que nos outros computadores da rede, que você testou, possa não haver uma impressora configurada ou, se havia, poderiam não estar mais presentes após a instalação do SP3 do XP. Comento isto porque há um update (KB953979) para corrigir problemas relacionados às conexões de rede:

After you install Windows XP Service Pack 3 (SP3), Device Manager may not show any devices, and Network Connections may not show any network connections.

Dê uma conferida nesta questão do compartilhamento da impressora (acredito que seja utilizado)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Como o erro está no Create e não no Preview, fica descartada um dos problemas relacionados a variável de ambiente (se não me engano, inclusive, você já tratou desta questão em outro tópico). Então, lembrei que havia uma outra condição em que já ocorreu erro similar. Trata-se de quando não há uma impressora configurada no computador (nas versões mais recentes do quick, parece-me que isto não ocorre mais).

Você tem toda a razão Micheus o problema é mesmo na impressora,mas estranho porque aqui onde eu testo os programas tenho uma impressora HP PhotoSmart C3100 na porta USB e está como impressora activa?? então o que fiz como tenho uma impressora no meu pc na porta LPT1 HP 710 partihei para a rede e fui no outro pc e mudei para esta HP 710 e zás os aplicativos rodam impecável.Quando mudo para a C1300 já não dá?estranho isto?

Depois fui buscar a actualização que você falou para a QuickReport e parece que agora tudo está funcionando,vou fazer mais uns testes aqui e depois falo. Obrigado Micheus você é um salvador mesmo,o messias do Delphi... :D

Pode fechar o tópico,problema resolvido,mais uma vez obrigado Micheus , Jhonas e Eder Moraes.

Abraços.

Editado por António44
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...