Ver Mensaje Individual
  #3  
Antiguo 15-08-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Tiene owner el objeto Application. Así que se destruye al final de todo. Así que en la práctica es un memory leak porque está la referencia al form hasta que no se destruye Application.

Básicamente se crea un form nuevo cada vez que se dispara el evento del botón. Y cuando se cierra queda oculto y como la referencia original es nil, not assigned evalúa a true

Lo suyo es evitar las variables globales; crear, mostrar, operar el form, y destruirlo cuando no se necesita más. Como cualquier objeto, por ejemplo cuando se usan stream siempre se liberan cuando ya no hace falta

Ahora es cierto que hay casos en los que un form, frame o cualquier control se incrusta dentro de otro y el tiempo de vida es el mismo que el de su parent. En ese caso lo ideal es crearlos en el constructor y destruirlos en el destructor. Lo mismo que un dbgrid, un string grid, un ListView, etc. Código que anda chequeando por nil termina cansando
Lo justo es asegurarse de que todo los controles estén propiamente inicializados.

Por ejemplo en tu código no preguntas si el botón esta asignado. Así debería ser siempre con todos
Responder Con Cita