Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Diferencia entre nil y self en el método create (https://www.clubdelphi.com/foros/showthread.php?t=73192)

oscarac 06-04-2011 21:03:09

Diferencia entre nil y self en el método create
 
cual es la diferencia entre

Código Delphi [-]
Tform1.create(nil);
y
Tform1.create(Self);

si alguien (Roman) pudiera detallar en forma clara sus usos ventajas y desventajas se los agradecere

maeyanes 06-04-2011 21:17:37

Hola...

Ya para la cantidad de mensajes que tienes, deberías saber que los títulos de los hilos o temas nuevos deben estar bien formulados...

El título que usaste: Hilo nuevo.. pregunta no me dice nada...

Te recomiendo que le des otra leida a la guía de estilo de los foros (enlace en mi firma).

Sobre lo que preguntas, has una búsqueda en los foros, ese tema ya se ha tratado en alguna otra ocasión...



Saludos...

oscarac 06-04-2011 21:20:04

lo se lo se...
solo que me deje llevar por la emocion del free, el nil y el freeandnil, voy a reformular la pregunta

D-MO 06-04-2011 21:29:16

He editado el título del hilo por uno mas apropiado.

Saludos.

oscarac 06-04-2011 21:40:03

se agradece por el cambio en el Titulo..... yo no tengo esa posibilidad.....

Casimiro Noteví 06-04-2011 21:51:22

Básicamente:
* lo que tú creas... tú lo destruyes
* si no lo creas tú... tú no tienes que destruirlo

roman 06-04-2011 21:58:59

Para entender la diferencia entre Create(nil) y Create(Self) hay que entender qué significa el parámetro de Create, y para ello puedes consultar aquí.

// Saludos

oscarac 06-04-2011 22:03:03

mmmm
que pasaria entonces si los formularios que voy creando los definio asi

Código Delphi [-]
 
Tform1.create(self)

eso quiere decir que cuando salga (onClose) ya no tengo que destruirlo?:eek:

o se refiere a destruir lo que pueda contener el form o el objeto o a los que llame dentro de el???

ecfisa 06-04-2011 22:39:35

Hola oscarac.

Copio la respuesta que te dí en el otro hilo y borro la anterior, ya que este es el hilo donde debe ir.

"Creo que no te fué contestada la pregunta, una explicación rápidita. El constructor de un Form es:

Código Delphi [-]
constructor Create(AOwner: TComponent) ;

El argumento AOwner va a dictaminar quien es el dueño del objeto creado:

Si es nil, no tiene dueño por lo tanto es tu problema la liberación del mismo.

Si es Self, el dueño será el objeto implícito (Self) pasado en el argumento, cuando este es liberado también lo es el otro.
Ejemplo:
Código Delphi [-]
procedure TForm1.ButtonClick(Sender: TObject);
begin
  with TForm2.Create(Self) do ShowModal;  // Owner es Form1
end;

Si es Application, el dueño es la variable global Application, cuando la aplicación finaliza es liberado el Form."

Un saludo.

Nota: Lamento la demora pero estoy renegando con el router... :(

ecfisa 06-04-2011 23:15:21

Con respecto a tu última pregunta, aca aunque en inglés, lo explican mucho más claramente.

Un saludo

roman 07-04-2011 00:06:38

Cita:

Empezado por ecfisa (Mensaje 396106)
"Creo que no te fué contestada la pregunta

Ejem :rolleyes:

Cita:

Empezado por roman (Mensaje 396099)
Para entender la diferencia entre Create(nil) y Create(Self) hay que entender qué significa el parámetro de Create, y para ello puedes consultar aquí.

// Saludos

ecfisa 07-04-2011 12:42:42

Hola roman.

Había visto tu respuesta más arriba, pero copie y pegué textualmente el mensaje del otro hilo y se me pasó por alto quitar esa línea.
Hasta ese momento nadie le había contestado y ese es el por qué de la presencia ese párrafo, que debí haber quitado o al menos modificado.
Resumiendo el concepto en una palabra: Haraganería.

Así que van mis disculpas. ;)

Un saludo.:)


La franja horaria es GMT +2. Ahora son las 18:11:03.

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