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 22-04-2010
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Create(Nil) o Create(Self)

Buenas amigos tengo la siguiente duda, yo se que si se crea un objeto de forma Nil, no pertenece al formulario y nosotros tenemos que liberar la memoria a pie! y si lo creamos Self, pertenece al Form y el liberara el espacio en memoria al ser cerrado, de todas maneras tengo la duda de cual es mejor por ejemplo a la hora de usar un objeto de tipo TZquery

porque por lo general lo he visto de la siguiente forma

Código Delphi [-]
Zq1:=TZQuery.Create(Nil);
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #2  
Antiguo 22-04-2010
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.

Esto creo que es regla de oro para cualquier componente:

Si lo creas en el programa principal y queres destruirlo al finalizar la aplicación usa Application , si lo creas en otro Form y queres que se destruya al destruirse este, usa Self. Ahora si liberarlo depende de algún otro evento o situación usa nil, así te aseguras evitar errores por liberar dos veces el componente.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 22-04-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Como tú bien has dicho el resultado final es el mismo si se hace bien.

Si dejas que el formulario destruya el elemento estás dejando esa tarea para cuando se cierre el formulario y la mayoría de las veces no es necesario esperar tanto.

Salvando ese caso, lo normal será que destruyas el objeto cuando ya no lo necesitas, de ahí que la forma que suelo utilizar es:
Código Delphi [-]
  XX.Create(nil);
  try
    ...
    ...
  except
    XX.Free;
  end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que será 'finally' y no 'except', porque si no ocurre ninguna
'exception' no se eliminará de la memoria correctamente

Código Delphi [-]
XX.Create(nil);
try
  ...
  ...
// except
finally
  XX.Free;
end;

También puede ser que esté dormido y me esté confundiendo, voy a tomarme un café
Responder Con Cita
  #5  
Antiguo 22-04-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Fuera dudas: Nil, Self, Application

En su blog, Zarko Gajic explica (en inglés) con detalle este tema.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #6  
Antiguo 22-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que será 'finally' y no 'except', porque si no ocurre ninguna
'exception' no se eliminará de la memoria correctamente
Es que el código de Neftali es un código pesimista: presupone que siempre saldrá mal algo

// Saludos
Responder Con Cita
  #7  
Antiguo 22-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Es que el código de Neftali es un código pesimista: presupone que siempre saldrá mal algo
// Saludos
Es que Neftalí debe ser admirador acérrimo de Murphy
Responder Con Cita
  #8  
Antiguo 22-04-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Código Delphi [-]
XX.Create(nil);
try
  ...
  ...
finally
  XX.Free;
end;
Cita:
Empezado por Casimiro Notevi Ver Mensaje
También puede ser que esté dormido y me esté confundiendo..
Gracias Casimiro. Eso exactamente es lo que quería decir.
Está claro que el que está dormido soy yo...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Pregunta ? Create !! pmtzg Varios 1 31-01-2008 17:23:22
Orientacion con Create(self) pmtzg Varios 1 28-01-2008 22:34:01
Funcion Create de SQL GerTorresM SQL 3 07-09-2007 13:00:43
Create Function rickymarti Firebird e Interbase 1 02-12-2004 10:37:00
Can't create socket juanchi Internet 1 09-10-2003 17:58:57


La franja horaria es GMT +2. Ahora son las 15:18:02.


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