Ver Mensaje Individual
  #5  
Antiguo 15-10-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Reputación: 13
engranaje Va por buen camino
Tendrías que revisar el ambito de las variables... los dos asuntos se refieren a eso.
A grandes rasgos una variable según donde la declares tiene un ciclo de vida y una accesibilidad distinta.

Las que se añaden como privadas o publicas dentro de una clase se crearan cuando se cree una instancia esa clase y se destruiran cuando se destruya esa instancia. Ya dependiendo de si la declaras public o protected podra accederse a ella facilmente con nombreDeInstancia.nombreDeVariable o solo podra accederse desde dentro de la misma clase. Como ves en este caso lo que habrá realmente será una variable distinta por cada instancia.

Pero en cualquer unit puedes declarar variables antes de la implementation y fuera de cualquier clase. Esa variable podria considerarse global y sera accesible desde la propia unit o desde cualquier otra que la tenga en el uses. Pero en este caso la variable (vuelvo a decir que a grandes rasgos) se creará cuando se inicia la aplicación y se destruirá cuando la aplicación se destruya.

Por otro lado se pueden declarar variables dentro de un procedimiento o una función (en tu caso dentro de la acción) pero en ese caso esas variables son locales y solo existiran dentro de esa función, una vez se salga seran destruidas. En tu caso creas una instancia de un objeto y lo asignas a una variable, pero con ella no vas a hacer nada será destruida y tu instancia seguia existiendo pero realmente solo vas a poder acceder a él a traves de su handle. Sería lo mismo, creo que lo que puse en mi ejemplo hacer un create del form sin asginarselo absolutamente a nada. Si el único motivo por el que necesitabas una variable era acceder a un metodo de la instancia del objeto desde fuera de este bastaria con llamar al método dentro de un with.

Espero no haberme liado demasiado y que me hayas entendido, de todas formas si buscas algo mas acerca de la vida de las variables en delphi fijo que lo encuentras bien explicado en algún sitio.
Responder Con Cita