Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2014
joserosales2015 joserosales2015 is offline
Registrado
NULL
 
Registrado: may 2014
Posts: 1
Poder: 0
joserosales2015 Va por buen camino
Destruir un objeto

Hola amigos, tengo el siguiente problema, cuando creo mi propia clase TCar heredada de TObject, le implemento algunos atributos, luego lo creo como es usual: Carro := TCar.Create;
El problema es cuando trato de destruirlo, después de llamar a Carro.Free;, sigo teniendo acceso a sus atributos y los puedo modificar y no me muestra ningún error, por lo que creo que no se ha eliminado del todo. He probado también con Carro.Destroy; y nada. Espero que me ayuden. Gracias.
Responder Con Cita
  #2  
Antiguo 31-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Destruir objetos david.rguez Varios 28 03-03-2007 03:31:59
destruir Aplicacion jubers85 Varios 2 10-02-2006 09:27:40
destruir objeto creado en tiempo de ejecucuión jaime cotino Varios 5 28-06-2005 20:45:36
Destruir un TIBQuery furniman Varios 1 25-03-2004 12:20:14
como se puede destruir un objeto en ejecucion o_rlando20 OOP 1 14-05-2003 02:23:32


La franja horaria es GMT +2. Ahora son las 16:53:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi