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

Erro De Memória - (RESOLVIDO)


Guest - fm.eng -

Pergunta

Guest - fm.eng -

estou fazendo um sistema em que na form principal tem alguns menus, quando o usuario clica em algum deles é direcionado para outra form que tem um botão fechar, se o usuario clicar novamente no mesmo menu aparece este erro:

'Access violation at address 00000301. Read of address 00000301'.

vocês tem algumas sugestão do que pode ser o problema? Todas as forms envolvem requisições com o banco de dados, exceto a form principal.

Valeu...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Guest - Maurício -

Seguinte, o erro Access Violation é muito comum, e difícil de ser identificado pois qualquer acesso a memória inválida ou não inicializada causa este erro. No seu caso, como você explicou a situação, fica fácil identificar a causa!

O lance é o seguinte, provavelmente o seu formulário é criado e inicializado automaticamente (pode ser que você também tenha colocado código para instacia-lo no momento de mostra-lo, mas se fosse o caso este erro não ocorreria). Quando o segundo form é fechado, o código do botão, ou do evento OnClose do form deve estar liberando o formulário (destuíndo e removendo a instância da memória) com algum código como:

No botão:

Form.Free;

ou

Form.Release;

ou

FreeAndNil(Form);

ou no OnClose do Form:

Action := caFree;

Remova todo este código, e coloque no botão de fechar o form:

Form.Close;

Isso fará com que o forma não seja destruído, e possa ser aberto novamente.

Não se preocupe em liberar a instância do form, pois provavelmente, se ele foi inicalizado da forma correta, o programa vai se encarregar de fecha-lo quando a aplicação for terminada.

Caso sua aplicação tenha vários forms e precise economizar recursos, é muito importante utilizar uma forma melhor de controle de instâncias, mas isso já é outra história

Tenho uma amiga que trabalha em um centro de treinamento da Borland, que inclusive é muito forte aqui em São Paulo, se você se interessar posso passar seu email pra ela te enviar conteúdos de cursos que vão sanar todas estas dúvidas!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - fm.eng -

na action do botão fechar da segunda Form eu coloquei form.release e em seguida modalresult:=-1.

Não sei se vai adiantar mas vou colocar no onclose.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - fm.eng -

Deu certo, VALEU DEMAIS.

você sabe a diferença entre onshow e onactivate, se eu colocar essas intruções:

datamodule1.SQLclientdataset_agenda.active:=true;

datamodule1.clientdataset_agenda.active:=true;

VALEU....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Maurício - Borlander

Seguinte, o OnShow é somente quando o form está invisível e aparece, roda quando o form recebe foco (estando ou não visível) ...

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa, escreví errado!

Seguinte, o OnShow é somente quando o form está invisível e aparece.

O OnActivate roda quando o form recebe foco (estando ou não visível previamente visível) ...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...