Problemas al eliminar form de memoria
Hola a todos.
El problema es el siguiente. Mi aplicacion tiene un formulario que se utiliza repetidamente. Al hacer click en un botón "Editar" se ejecuta el siguiente código:
Cuando cierran el formulario ejecuto un Close y en el evento OnClose ejecuto Action := caFree; El tema es que el formulario no se borra y en cada llamada se crea una nueva instancia del mismo en memoria hasta que la aplicacion aborta por falta de espacio. Si al llamar nuevamente el formulario ejecuto este código: sale el mensaje. Como puedo solucionar este tema? Gracias por adelantado |
El mensaje saldrá aunque liberes la memoria. Una cosa es liberar la memoria y otra es que el puntero apunte a un lugar de esta.
Para probar que de verdad es ese el problema, deberías llamar al formulario como lo haces y luego volver a llamarlo pero sin crear el objeto (sin la primera línea). Seguramente dará errores porque el formulario se ha liberado. El problema debe ser otro.
Si este código falla, quiere decir que la memoria se consume en otro lugar de la aplicación. |
En el evento onclose ademas de action:=cafree debes asignar nil a la variable
|
Gracias por su respuesta, faltaba al nil aunque en un momento lo había puesto y me tiraba una excepcion.
Ahora funciona perfecto, habría algo mal en mi ordenador... Nuevamenta Gracias! Saludos |
Nunca debes asignar nil a un objeto dentro de si mismo. Ni siquiera en el evento que lo cierra. Puede ser que todavía se necesite a si mismo para cerrar otras cosas.
Si deseas que el valor sea nulo para poder hacer futuras comprobaciones deberás hacerlo fuera del objeto.
|
Cita:
De hecho, más generalmente, no es buena práctica referirse a un objeto específico desde un método de una clase. // Saludos |
La franja horaria es GMT +2. Ahora son las 17:05:03. |
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