Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Palabra reservada "nil" (https://www.clubdelphi.com/foros/showthread.php?t=51293)

citlalliDgp 11-12-2007 21:12:52

Palabra reservada "nil"
 
Hola otra vez, amigos. Alguien puede explicarme qué pasa cuando asigno el valor 'nil' a un componente ??... Por ejemplo:

Código Delphi [-]
Form1:=nil;

O generalizando más, la pregunta sería... Para que sirve la palabra reservada 'nil' ????

Alguien podría ayudarme, por favor.;)

seoane 11-12-2007 21:23:59

nil es una constante que representa un puntero nulo (cero). Una variable que contiene un objeto no es mas que un puntero a la posicion de memoria donde esta guardado el objeto. Si tu a una variable que hace referencia a un objeto le asignas nil, simplemente esa variable deja de apuntar al objeto pero el objeto sigue ahi en memoria.

Por ejemplo:
Código Delphi [-]
var
  Objeto: TMiObjeto;
begin
  Objeto:= TMiObjeto.Create;
  // Ahora la variable "Objeto" apunta al objeto recien creado
  Objeto.Free;
  // Ahora la variable objeto no ha variado, pero apunta aun objeto que ya no existe

  Objeto:= TMiObjeto.Create;
  Objeto:= nil;
  // Ahora la variable objeto tiene un valor nulo, pero el objeto que hemos creado sigue ahi, 
  // y como no tenemos ninguna variable que apunte hacia el, se quedara ahi
  // malagastando la memoria
end;

¿Algo mas? :)

jachguate 11-12-2007 21:54:32

Lo dicho por seoane es cierto.

Solo quiero añadir que en algunos casos, podría ser que al asignar el valor nil a una propiedad de un componente si se lleve a cabo la destrucción del objeto que apuntaba. Caso de la conocida propiedad Picture de la clase TImage.

Si tenes interés en el tema, investigá el uso de la memoria dinámica.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 05:19:33.

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