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 15-02-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Te hago dos obeservaciones

1. Te falta el override del destructor, tiene que ser asi:
Código Delphi [-]
destructor Destroy; override;

2. Llama al inherited del destructor al final

Código Delphi [-]
destructor cMiClase.Destroy;
begin
  FreeAndNil(Obj);
  inherited Destroy;
end;
__________________
[Crandel]
Responder Con Cita
  #2  
Antiguo 15-02-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Tercera observación , se que lo que pussite es un ejemplo sencillo, pero no es suele ser conveniete crear un objeto en en Create de una clase y destruirlo en un boton.
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 15-02-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Cita:
Empezado por Crandel Ver Mensaje
Te hago dos obeservaciones

1. Te falta el override del destructor, tiene que ser asi:
Código Delphi [-]destructor Destroy; override;
Ahora sí que se ejecuta el método, ese era el gran fallo, pensaba que al igual que en el constructor no era necesario redefinir el método. Editado queda.

Cita:
Empezado por Crandel Ver Mensaje
2. Llama al inherited del destructor al final

Código Delphi [-]destructor cMiClase.Destroy; begin FreeAndNil(Obj); inherited Destroy; end;
Gracias, he cometido otro fallo de principiante aquí . Lo he editado también.

Cita:
Empezado por Crandel Ver Mensaje
Tercera observación , se que lo que pussite es un ejemplo sencillo, pero no es suele ser conveniete crear un objeto en en Create de una clase y destruirlo en un boton.
Efectivamente es un ejemplo pero sí que acostumbro a crear objetos nada más crearse la aplicación, ¿por qué no es conveniente? Por otro lado no acostumbro a destruir objetos pulsando botones.

Saludos.

Última edición por noob fecha: 15-02-2009 a las 22:55:08.
Responder Con Cita
  #4  
Antiguo 16-02-2009
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Cita:
Empezado por noob Ver Mensaje
Gracias, he cometido otro fallo de principiante aquí . Lo he editado también.
Pues cometiste otro más . Sólo debias invertir en el Destroy y no en el contructor.

La idea es pedir que cree todo lo que necesita la clase base antes de que cree nuestras cosas; y al destruir, destruimos todas nuestras cosas antes que los elementos propios de la clase base.

Cita:
Empezado por noob Ver Mensaje
Efectivamente es un ejemplo pero sí que acostumbro a crear objetos nada más crearse la aplicación, ¿por qué no es conveniente? Por otro lado no acostumbro a destruir objetos pulsando botones.
Justamente eso, si creas los objetos en el Create, destruilos cuando se destruye en el formulario y no en el evento un botón.

solo lo aclaraba por las dudas.

Aclaración del FreeAndNil, como se ve en el código de esta función que publico DarkMan, la unica accion agreda es la de asignar al puntero del objeto el valor nil. Por lo que no tiene sentido llamarlo cuando no es necesario, principalmente en el destroy, simplemente llama al metodo Free.

La función esta realmente definida para los casos en los que los objetos se crean dinamicamente y en un determinado momento necesitas diferenciar su estado. Entonces puesdes preguntar
Código Delphi [-]
if objeto <> nil then
__________________
[Crandel]
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
Programacion orientada a Objetos...duda total.... Kenobi Varios 20 30-07-2008 15:38:25
Objetos de sistema y otros problemas PaFernan99 Oracle 1 15-05-2008 23:16:29
Duda sobre uso de biblioteca de objetos romanuel C++ Builder 4 30-03-2008 04:22:02
Accesar a las propiedades de otros objetos sharky Varios 2 07-12-2004 23:58:55
Destrucción de objetos locales Aprendiz OOP 4 04-10-2003 00:02:03


La franja horaria es GMT +2. Ahora son las 11:16:29.


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