A função Assigned() testa se um determinado ponteiro ou variável procedural tem o valor nil. Vale ressaltar que, em essência, uma instância de objeto também é um ponteiro. Fazer este teste não garante que aquela instância ou ponteiro não esteja apontando para local algum. Ou seja, vc pode estar fazendo um fRelBasic.Free para desalocar o objeto da memória, mas depois vc está garantindo que fRelBasic receba um valor nil para indicar que, além de liberado, a instância aponta para lugar algum?
Deduzo pelo nome da instância que vc deve estar fazendo algum tipo de chamada genérica para um relatório. Sendo assim, minha sugestão de código pra vc seria a seguinte: if Assigned(fRelBasic) then begin fRelBasic.Free; fRelBasic := nil; end; Ou ainda, if Assigned(fRelBasic) then FreeAndNil(fRelBasic); Esta última sugestão, além de desalocar a instância, atribui o valor nil à mesma. Boa sorte. Sds. _______________________________ To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Mon, 20 Oct 2008 13:45:31 -0300 Subject: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned?? Amigos, tenho o seguinte codigo; if Assigned(fRelBasic) then fRelBasic.Free; As vezes, sim as vezes... abre uma Violação de Acesso no fRelBasic.Free e realmente existe o form, pois eu o vejo... e não tem codigo nenhum no OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele, não previne de entrar no Free caso ele não esteja na memória? Ou não!? []s -- _________________________________ T.·.F.·.A.·. Fellipe Henrique _________________________________________________________________ Confira vídeos com notícias do NY Times, gols direto do Lance, videocassetadas e muito mais no MSN Video! http://video.msn.com/?mkt=pt-br