Array
(
)

problemas com form na memoria

Rafael Santana
   - 25 fev 2006

pessoal eu faço a seguinte verificacao antes de abrir uma query

if form_clientes <> nil then
begin
comandos
....
end

se o form NÃO estiver criado, então eu abro uma query.


mas dá um erro de access violation, como se o form ainda estivesse criado...COMO FAÇO PARA DELETAR O FORM DA MEMÓRIA...

já usei ACTION:=CAFREE no evento ONCLOSE, mas não funcionou....


Marco Salles
   - 25 fev 2006


Citação:
mas dá um erro de access violation, como se o form ainda estivesse criado...COMO FAÇO PARA DELETAR O FORM DA MEMÓRIA...


este assunto é sempre muito discutido... Depende de com voce esta criando os seus forms se são auto criados se são MDIS etc...

o que acontece que a instrução :
if form_clientes <> nil then
testa apenas se o ponteiro não e nil , mas não verifica se este ponteiro é valido

no seu caso posso arriscar um palpite por este comentario


Citação:
já usei ACTION:=CAFREE no evento ONCLOSE, mas não funcionou....


alem do cafree coloque nomeform:=nil , no evento onclose
tipo isso

#Código

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2:=nil;
action:=Cafree;
end;


existe ainda métodos como o FreandNil etc.. mas com eu disse , o melhor ataque depende de com esses forms estão sendo criados...


Rafael Santana
   - 25 fev 2006

amigo...cara, deu certinho..

muito obrigado

:D