Ver Mensaje Individual
  #13  
Antiguo 06-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por GerTorresM Ver Mensaje
cual es la función mas indicada para destruir un objeto para este caso un formulario

[...]

y muy en concreto cual es la diferencia entre las dos funciones
En términos llanos, FreeAndNil lo que hace es llamar al método Free del objeto y luego asignar nil a la variable que hace referencia al objeto. Dicho de otra forma:

Código Delphi [-]
FreeAndNil(Obj);

es equivalente a

Código Delphi [-]
Obj.Free;
Obj := nil;

La única razón para usar FreeAndNil al momento de liberar un objeto es asegurarte que el objeto apunta a nil y no a una dirección de memoria arbitraria. Esto te puede servir si posteriormente utilizas la variable y quieres saber si sigue "vivo":

Código Delphi [-]
if Assigned(Obj) then
  ...

Pero, en el caso que propones, siendo una variable temporal que no se usa posteriormente, no tiene nonguna ventaja poner la variable en nil ni, por tanto, usar FreeAndNil.

// Saludos
Responder Con Cita