19/04/2010


Free -- serve para o Objeto que não tenha um dono... por exemplo


  var
    MinhaLista: TStringList;
  begin
    MinhaLista := TStringList.Create;
    MinhaLista.Blablabla...


    MinhaLista.Free;
  end;


  MinhaLista é dona dela mesma... assim não depende de outra instancia e pode 
ser liberada da memoria sem erros.





  Outro exemplo


  SeuForm := TSeuForm.Create(nil);
  Try
    SeuForm.ShowModal;
  finally
    SeuForm.Free;
  end;


  SeuForm é dono dele mesmo... o que seria diferente de:


  Application.CreateForm(TSeuForm, SeuForm);


  Desta forma Application é dona do SeuForm e teria que ser destruido assim


  SeuForm.Release; // Aguarda todos os processos(componentes e variaveis) 
pendendentes dentro dele.
  SeuForm := Nil; // Limpa a variável SeuForm para poder ser Recriada


  Se usar Free neste caso poderá causar violation por outros componentes 
estarem dependentes do SeuForm


  Observe que se voce nao utilizar Release e Nil neste caso, sera criado um 
outro form com o nome SeuForm_1 e assim por diante. 


  Se for usar aplicações MDI use Free ... do contrário use Release e Nil.

0 comentários:

Postar um comentário