FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear Frames dinamicamente
hola, pues que he hecho un programa que tiene pestañas pero en una implementación propia con imagenes, en fin, el problema que tengo es a la hora de la creación y destrucción de mis frames, la idea es que al hacer click en una pestaña se cree un frame pero reviso si ya hay algún otro creado para liberar esa memoria.. si existe algún otro frame a liberarlo!!
si lo hago de esta forma:
me deja crear y "destruir" sin problemas aparentemente, pero he visto que la memoria no se libera. sin embargo si al crearlo lo creo así:
la memoria vaya que se libera, pero a la segunda vuelta al querer crearlo de nuevo me dice que ya existe. al dar click a cada pestaña ejecuto algo como esto: La verdad que no se que estoy haciendo mal, pero ya me he desesperado, creo que aún no comprendo como crear y destruir objetos dinamicamente.. Gracias!! |
#3
|
|||
|
|||
Gracias ecfisa por tu pronta respuesta, de la forma que me dices la memoria ya no se satura, me refiero a que ahora al crear ya no vuelve a reservar esa memoria, pero sigue sin liberarla, el frame se destruye visualmente y me deja crearlo de nuevo sin problemas, pero no libera la memoria
Edito: La memoria la reviso con el administrador de tareas y para asegurarme que el frame tenga suficiente tamaño para que se note, le he puesto una imagen, no se si deba destruir la imagen aparte, pero el frame no tiene onClose, segun entiendo con destruir el frame debería liberar la memoria, no se si me equivoco en eso.. Última edición por iktwo fecha: 17-09-2010 a las 22:27:11. |
#4
|
||||
|
||||
Hola.
No sabía lo de la imágen, si usás un componente TImage probá de liberarlo antes del FreeAndNil. Saludos. |
#5
|
|||
|
|||
Bueno gracias, pero lo que me dices no es opción por la cantidad de componentes que podría llegar a tener mi frame, aparte si al crearlos les pongo en vez de nil self no necesito liberar la imagen independientemente, uf no se que pasa pero no logro liberar esa memoria, de nuevo gracias
|
#6
|
||||
|
||||
Una aclaración.
El administrador de tareas es relativamente una mala idea para ver el consumo de memoria. Esto se debe a la forma en la que la memoria se asigna y libera en Windows. Puede ocurrir (de hecho es prácticamente 100% del tiempo) que vos liberes la memoria desde tu programa, pero que realmente no se esté liberando por el sistema de memoria que usa Windows. Lo más seguro creo que sería usar FastMM. Que es un manejador de memoria muy potente que, entre otras cosas, te dice cuando hay goteos de memoria. Si estás usando, creo recordar, versiones anteriores a Delphi 2010, podés agregarlo a la uses de tu DPR y listo (y preparate para llevarte una sorpresa ). En D2010 creo que ya viene incorporado así que no hay necesidad. Sólo tendrías que habilitarlo (supongo). Otra cuestión, no pusiste el código que estás usando para liberar la memoria antes de crear un nuevo frame... Quizás está ahí el problema. Saludongos. |
#7
|
|||
|
|||
Gracias de nuevo por la respuesta, antes que nada mi código para liberar:
Bueno he probado primero nil y luego free, así como también FreeAndNil, uso delphi 2010, y aunque se que el administrador de tareas no es lo mejor para analizar si se ha liberado o no, lo raro es que si creo el frame así
en vez de con nil, eso si me libera inmediatamente la memoria se refleja al instante en el adminsitrador de memoria, es por eso la duda.. claro que al crearlos con self no me deja crearlos 2 veces me dice que el nombre del componente ya existe.. Gracias!! |
#8
|
|||
|
|||
Siento hacer doble post, no me dejaba editar el anterior, pues ya libera la memoria, lo he hecho con FreeAndNil pero el owner la propia forma e inmediatamente lo libera, Gracias por su ayuda!!
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
crear MaterialLibrary dinamicamente | Isuri | Varios | 13 | 22-04-2009 21:42:33 |
Crear Frame Dinámicamente | chinchan | C++ Builder | 2 | 09-05-2008 14:07:08 |
crear componente de bd dinamicamente | gushmaish | Varios | 2 | 01-03-2007 19:28:45 |
Crear RadioButtons dinámicamente | Javi2 | Varios | 4 | 26-07-2004 17:27:00 |
crear popups dinamicamente. | tango01 | OOP | 2 | 06-01-2004 16:33:03 |
|