Action:=caFree x FreeAndNil()

05/12/2005

0

Substituí Action:=caFree por FreeAndNil() em meus formulários e tive um problema: ao fechar a aplicação, o processo continuava carregado. Retornei ao formato anterior, no formulário principal, e o problema foi resolvido.

Perguntas:
a) FreeAndNil(<Instância do Form>) é equivalente aos comandos Action:=caFree + <Instância do Form>:=nil ?

b) Action:=caFree no formulário principal libera todos os recursos alocados pela aplicação?

c) Quando usar um e outro?

Grato pela atenção.


José Cordeiro

José Cordeiro

Responder

Posts

05/12/2005

Nildo

[quote:d824ab6413=´José Henrique Cordeiro´]Substituí Action:=caFree por FreeAndNil() em meus formulários e tive um problema: ao fechar a aplicação, o processo continuava carregado. Retornei ao formato anterior, no formulário principal, e o problema foi resolvido.

Perguntas:
a) FreeAndNil(<Instância do Form>) é equivalente aos comandos Action:=caFree + <Instância do Form>:=nil ?

b) Action:=caFree no formulário principal libera todos os recursos alocados pela aplicação?

c) Quando usar um e outro?

Grato pela atenção.[/quote:d824ab6413]

São duas coisas diferentes. o Action := caFree funciona dessa maneira:
Quando você criar um form e dar um ShowModal nele por exemplo, seu for ficaria assim:

SeuForm := TSeuForm.Create( Application );
SeuForm.ShowModal;
SeuForm.Free;


Se você usar o Action := caFree no SeuForm, evitaria que você utilizasse o SeuForm.Free no momento em que você o chamou.

Eu sempre dispenso o uso do FreeAndNil, mas o que ele faz é liberar um objeto da memória e atribuir NIL à variável dele.

Quando a colocar o Action := caFree no form principal, não precisa, pois quando você fechar seu Form Principal sua aplicação será fechada e todos os recursos utilizados por ela será liberado da memória.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar