ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

"ACCESS VIOLATION AT ADDRESS" - Perseguição

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
eLd
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 4 de Abril de 2008
Mensagens: 117

MensagemEnviada: Ter Set 09, 2008 3:26 pm    Assunto: "ACCESS VIOLATION AT ADDRESS" - Perseguição Responder com Citação

Buenas gurizada!

Esse tal de "Access Violation" tá me perseguindo, e não sei mais oque fazer com ele...

"ACCESS VIOLATION AT ADDRESS 00428088 IN MODULE 'BIOPONTO.EXE' WRITE OF ADDRESS 0769 C2D1."

Esse erro, ocorre sempre na linha onde eu faço um QryBatidas.Open;
Mas o mais estranho, é que acontece algumas vezes, não tem uma regra.
As vezes o programa funciona por horas, dias, e as vezes por minutos ou segundos.
Então to modificando varios códigos no meu programa, a fimde tentar eliminar isso..

Mas agora surgiu uma dúvida...meu programa é um cartão ponto biométrico. Tem uma tela principal, com 4 botões, que o usuário escolhe, por exemplo "ENTRADA 1", "ENTRADA2", "SAIDA1" e "SAIDA2".
Quando ele escolhe, é aberto um novo form, solicitando que ele coloque o dedo no leitor biométrico. Depois disso, se abre um outro form, exibindo os dados e as informaçoes do funcionario. Depois de 5 segundos, é executado o comando SQL para incluir a batida no banco de dados, os 2 forms se fecham, e volta para a tela inicial do programa.

Para fechar os forms eu uso frm.Close e para abri-los eu uso o frm.ShowModal
Funciona bem, mas eu li uns tópicos sobre liberar o form da memória e construi-lo novamente quando for usar
Por ex.:

Código:
  try
      Application.CreateForm(TForm2,Form2);
      form2.ShowModal;
  finally
      FreeAndNil(Form2);
  end;


Esse código em cima, pelo que eu entedi cria e libera o form da memória.

Então eu pergunto (finalmente):
Qual o melhor método para eu usar? Showmodal & Close, ou Create & FreeAndNil

Se eu ficar criando e liberando o form da memória, não vai dar problema?

Fico no aguardo, e peço desculpas pelo tamanho do post!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
MarceloBigorna
Novato
Novato


Registrado: Segunda-Feira, 7 de Janeiro de 2008
Mensagens: 68

MensagemEnviada: Ter Set 09, 2008 3:37 pm    Assunto: Responder com Citação

Pelo pouco q eu sei e o pouco de experiencia q eu tenho eu acho q não. Comigo sempre aconteceu o contrário. Se eu não liberasse o form da memória que dava erro. Provavelmente esse erro de violação de memória é por causa disso. Direto acontece comigo por causa disso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
djtatao
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 14 de Dezembro de 2006
Mensagens: 256

MensagemEnviada: Ter Set 09, 2008 5:21 pm    Assunto: Re: "ACCESS VIOLATION AT ADDRESS" - Perseguição Responder com Citação

Boa tarde

try
Application.CreateForm(TForm2,Form2);
form2.ShowModal;
finally
FreeAndNil(Form2);
end;

este código sempre ticve problema quando chamos um outro formulario, mesmo que vc esta fazendo, eu sempre uso o release..

try
Application.CreateForm(TForm2,Form2);
form2.ShowModal;
finally
Form2.release;
end;

pode ser isso que esta com problema,
mas caso queira saber onde exatamente esta o erro faz assim:
quando der o erro vc entra no delphi com o prgrama rodando vai em search - find error e coloca o valor do erro, no seu caso 00428088, se caso o processo estiver rodadndo ele vai na linha exata do erro, caso contrario ele vai dar a mensagem de que o processo não esta rodadndo, ja foi destruido.

espero ter ajudado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Ter Set 09, 2008 8:50 pm    Assunto: Responder com Citação

vai por partes...

1 - o que é um access violation?

2 - Show e Close nao tem nada a ver com .Create e Free

coloque um breakpoint antes do QryAlgumaCoisa.Open, selecione a linha aperte ctrl+F7 e veja o valor... em algum ponto ele estara nil, e aí é que mora o problema

quando um objeto nao esta instanciado o valor dele é nil, e se vc tenta acessa-lo ocorre o access violation.

E o create e free servem exatamente pra isso, pra "upar" o objeto na memoria e depois retirá-lo de lá

Show e Close só deixa visivel ou invisivel

a unica solucao é debugar Very Happy
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eLd
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 4 de Abril de 2008
Mensagens: 117

MensagemEnviada: Qua Set 10, 2008 8:50 am    Assunto: Responder com Citação

DonOctavioDelFlores escreveu:
vai por partes...

1 - o que é um access violation?

2 - Show e Close nao tem nada a ver com .Create e Free

coloque um breakpoint antes do QryAlgumaCoisa.Open, selecione a linha aperte ctrl+F7 e veja o valor... em algum ponto ele estara nil, e aí é que mora o problema

quando um objeto nao esta instanciado o valor dele é nil, e se vc tenta acessa-lo ocorre o access violation.

E o create e free servem exatamente pra isso, pra "upar" o objeto na memoria e depois retirá-lo de lá

Show e Close só deixa visivel ou invisivel

a unica solucao é debugar Very Happy


Tudo bem que Create e Free não tem nada a ver com Show e Close, mas a minha dúvida é, no meu caso, eu que sempre uso esse form, a vantagem é deixa-lo visivel e invisivel, ou criar e destruir ele?

Citação:
quando um objeto nao esta instanciado o valor dele é nil, e se vc tenta acessa-lo ocorre o access violation.


Cara, desculpa mas eu não manjo muito da linguagem "técnica", então tu pode me explicar o que seria instanciado?

Quando eu uso minha Query, eu adiciono o componente AdoQuery num DataModule por exemplo, e passo as instruções pra ele, por exemplo Open, Close, etc..está errado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
wolverinefarah
Colaborador
Colaborador


Registrado: Sábado, 17 de Junho de 2006
Mensagens: 1770

MensagemEnviada: Qua Set 10, 2008 10:45 am    Assunto: Re: "ACCESS VIOLATION AT ADDRESS" - Perseguição Responder com Citação

Amigo,
Qdo vc abre essa qry ela esta localizada dentro de um formulario ou de um datamodule, se sim vc precisa criar o form ou datamodule que a contenha para vc pode-la utiliza-la, esse erro normalmente acontece qdo vc tenta dar o focus ou alterar algo que nao foi criado..

espero que entenda...


bye
_________________
Fernando Farah
PROGRAMADOR PROGRESS
PROGRAMADOR DELPHI + FIREBIRD
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB