Ver Mensaje Individual
  #2  
Antiguo 31-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola joserosales2015, bienvenido a Club Delphi

Sucede que luego de liberar la instancia de la clase TCar, el objeto (o apuntador) Carro no ha sido señalizado como nulo, por lo que todavía permite su utilización.

Te pongo un código muy simple comentado que grafica la situación:
Código Delphi [-]
type
  TNum = class(TObject)
    numero: Integer;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  o: TNum;
begin
  o:= TNum.Create;  // se crea una instancia de TNum 
  o.numero:= 1234;  // se da valor a un atributo
  ShowMessage(IntToStr(o.numero)); // Se muestra 1234
  o.Free;                          // Se libera la instancia
  o.numero:= 555;                  // El puntero aún no es nulo
  ShowMessage(IntToStr(o.numero)); // Se muestra 555
  o:= nil;                         // El apuntador se pone a nulo
  o.numero:= 333;                  // ¡¡¡ Error !!! Operacion de puntero inválida
Podes nulificar un puntero u objeto de ese modo, o en un solo paso mediante el procedimiento FreeAndNil:
Código Delphi [-]
  FreeAndNil(o);

Por último, como a todos los que ingresan, te invitamos a leer nuestra guía de estilo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita