 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
eLd Aprendiz

Registrado: Sexta-Feira, 4 de Abril de 2008 Mensagens: 117
|
Enviada: Ter Set 09, 2008 3:26 pm Assunto: "ACCESS VIOLATION AT ADDRESS" - Perseguiçã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 |
|
 |
MarceloBigorna Novato

Registrado: Segunda-Feira, 7 de Janeiro de 2008 Mensagens: 68
|
Enviada: Ter Set 09, 2008 3:37 pm Assunto: |
|
|
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 |
|
 |
djtatao Aprendiz

Registrado: Quinta-Feira, 14 de Dezembro de 2006 Mensagens: 256
|
Enviada: Ter Set 09, 2008 5:21 pm Assunto: Re: "ACCESS VIOLATION AT ADDRESS" - Perseguiçã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 |
|
 |
DonOctavioDelFlores Colaborador

Registrado: Quarta-Feira, 12 de Setembro de 2007 Mensagens: 2630 Localização: Pra lá de Bagda
|
Enviada: Ter Set 09, 2008 8:50 pm Assunto: |
|
|
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  _________________ “The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart |
|
Voltar ao Topo |
|
 |
eLd Aprendiz

Registrado: Sexta-Feira, 4 de Abril de 2008 Mensagens: 117
|
Enviada: Qua Set 10, 2008 8:50 am Assunto: |
|
|
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  |
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 |
|
 |
wolverinefarah Colaborador

Registrado: Sábado, 17 de Junho de 2006 Mensagens: 1770
|
Enviada: Qua Set 10, 2008 10:45 am Assunto: Re: "ACCESS VIOLATION AT ADDRESS" - Perseguiçã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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|