Ver Mensaje Individual
  #9  
Antiguo 06-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Código Delphi [-]
procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;

como ves se hace al revés ¿Por qué? Porque puede ocurrir alguna excepción al tiempo de liberar el objeto, y entonces no quedaría apuntando a nil, y el peligro sería el mismo.

En cuanto a lo demás, sería mejor que pegaras el código que te da error; ya que tengo mis dudas en eso de usar FormDestroy, ¿no querrás decir FormClose?

De hecho nunca se debe llamar a destroy, siempre se debe usar .Free sencillamente por esto:
Código Delphi [-]
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;

Si primero se usa FreeAndnil, la siguiente llamada a .Free no causará daño alguno.

Si se usa FreeAndNil y despues .Destroy, seguro que casca porque Destroy no comprueba el valor de nil.

Un saludo

Un saludo
Responder Con Cita