2 access violation - conhecem?

Delphi

05/06/2009

Oi gente aqui na empresa estou passando um aperto, pois estamos numa situação que possodizer ´inexplicavel´. Na minha máquina não da erro. Não da access. No outro dia na maquina do fulano da o access violation... chega no otro dia num da. Aí estamos numa situação que não sabemos quando vai dar o access violation ou não.

Então eu venho a ver se alguem consegue descrever esses access violation.

[b:a67dcbba18]Access Violation at adress #0000000[/b:a67dcbba18]
[b:a67dcbba18]Access Violation at adress FFFFFFFF[/b:a67dcbba18]

Sei que esses dois erros são familiares, mas não estou lembrando o que são. São a nossa dor de cabeça.


.lg.

.lg.

Curtidas 0

Respostas

Woinch

Woinch

05/06/2009

Esse erro acontece quando tu tenta acessar algo que não está criado na memória. Talvez você efetuou um Free em determinado ponto que a variável perdeu o ponteiro e ai você tenta executar um método ou atribuir uma propriedade a uma variável que não aponta para nada, entendeu? A melhor forma de encontrar isso é realmente debugando. Mas como você mencionou, acontece somente as vezes, então voce vai ter de ir meio que no tato. Será que não existe uma maneira de criar um tratamento global de exceções que diz exatamente onde gerou a exceção? Fica no ar a pergunta. Talvez isso ajude.


GOSTEI 0
.lg.

.lg.

05/06/2009

Existe o componente [b:df6577c2b9]ApplicationEvents[/b:df6577c2b9] da aba [i:df6577c2b9]Additional[/i:df6577c2b9].
Ele tem a propriedade [b:df6577c2b9]OnException[/b:df6577c2b9] que captura todas as exceções daquela aplicação. porem o sistema já tem um bom caminho andado. Se eu usar esse componente eu estragaria quase 25¬ do sistema.

Esse é a maneira do tratamento global.

A parte do debug, infelizmente não há erros no source nem variáveis sem ponteiro. Detesto dizer isso, mas a forma como foi feita o sistema é um lixo. Se pudesse reformular o sistema, ou replaneja-lo... seria ótimo. Meu chefe também programa e faz telas. porém ele é da época do assembly... :x

Pra tudo ele so usa [i:df6577c2b9]StringGrid[/i:df6577c2b9], sem contar o resto. Acho que os erros estão vindo das criaões dele. Ps. ´O código dele é uma merda de se ler. sem identação, códigos inúteis com 50 linhas que apenas com 1 resolveria...´


GOSTEI 0
Danielrsanches

Danielrsanches

05/06/2009

tente dar um Debug (F9) no seu sistema... ele vai parar exatamente onde está o erro ...
talvez vc encontre o erro no código do seu patrão !! hehe .. (manda ele embora) rsrsrs

brincadeiras a parte, tente o debug e post novamente !!

abraços !!


GOSTEI 0
.lg.

.lg.

05/06/2009

...tente o debug...

Na minha máquina não da erro. Não da access. No outro dia na maquina do fulano da o access violation... chega no otro dia num da. Aí estamos numa situação que não sabemos quando vai dar o access violation ou não.


E aí!? Sacou?


GOSTEI 0
Discorpio

Discorpio

05/06/2009

Bom dia a Todos.

.Lg., venho te deseja meus pêsames.

Digo isto porque passei pelo mesmo problema que voce está passando, com uma aplicação aqui denominada ´Sistema de Protocolo´, uma aplicação que parecia simples de implementar, porém se tornou um gigante Cavalo de Troia aqui na secretaria, pois como mudar toda a interface gráfica e todo o fluxograma de execução da aplicação, bem como a estrutura do banco de dados com mais de 628.000 registros nele.

Isto ocorreu, porque o meu ex-chefe, que iniciou o desenvolvimento da aplicação, foi mandado embora com a aplicação incompleta, onde passaram para os estagiários a completarem, imagina no que isso resultou.

Entretanto sempre costumo buscar orientações Divinas em momentos de oração, e DEUS me revelou a solução, embora que contundente, mas que resolve, na Bíblia em dois capítulos que dizem a mesma coisa que são ´Mateus 9:16´ e ´Marcos 2:21´ que diz:

[quote:d3c021b623=´Jesus Cristo´]
[size=18:d3c021b623][color=red:d3c021b623]Ninguém deita (coloca) remendo de pano novo em roupa velha porque semelhante remendo rompe a roupa e fica maior a rotura.[/color:d3c021b623][/size:d3c021b623][/quote:d3c021b623]

Em outras palavras, o que Jesus quiz dizer é que não adianta voce tentar consertar o que já está totalmente errado, quanto mais consertos voce faz, mas erros aparecerão.

Seguindo a orientação de Jesus, vi que, como disse antes, uma aplicação tão fácil de fazer que em menos de um mes, atualizei a base de dados de Firebird para PostgreSql em um nova estrutura (esta foi a parte mais difícil) e migrei a aplicação de Delphi para Java - Web, e olha que até os usuários gostaram de nova aplicação e disseram que o desempenho melhorou 100¬.

Quanto ao erro Access Violation, é justamente aquilo que o nosso amigo Woinch disse, este erro sempre reporta alguma tentativa de acesso a memória de algo que não está lá, pode ser uma variável de referência a um objeto, algum pointeiro e etc.


GOSTEI 0
.lg.

.lg.

05/06/2009

[b:75b60ef1cc]Discorpio[/b:75b60ef1cc],
O que você disse está totalmente certo. O prolema é o meu chefe.
Nós vamos esperar o novo delphi ser lançado (acredito que será o D2010, mas não sei), para poder migrar todas as aplicações de D6 e D7 pra ela.

Quanto aos access violation...
Era problema no drive da impressora. Precisavam atualizar o drive em algumas máquinas. Esse foi o motivo de so as vezes da o maldito Access Violation.


GOSTEI 0
POSTAR