Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Residente (https://www.clubdelphi.com/foros/showthread.php?t=12066)

Patxi 04-07-2004 10:55:35

Residente
 
Hola, al ejecutar un programa desde el IDE todo funciona bien, pero al ejecutarlo el solito, cuando se cierra se debe de quedar algo residente en la memoria de tal forma que ya no se puede ejecutar de nuevo a no ser que con el Administrador de Tareas elimine el proceso. Alguien sabría dóde tengo que mirar o algo?.
Muchas gracias.

marcoszorrilla 04-07-2004 11:07:58

Y cuando lo cierras que código tienes.

Sino das más datos.

Un Saludo.

Patxi 04-07-2004 20:39:20

Hola, no sé a qué te refieres en cuanto a lo del código. Solo veo que cuando lo cierro, es como si se cerrase bien, pero al volver a ejecutarlo aparece la pantalla como si quisiera iniciarse, pero vuelve a desaparecer, lo único que veo con respecto al programa, con el Administrador de Tareas o un Visor de Procesos, es que hay tantos procesos de este programa como los que yo he intentado ejecutar y hasta que no los elimino todos no puedo ejecutarlo y entonces lo hace bien claro, pero luego al cerrarlo vuelve la misma historia, que tengo que eliminar ese proceso manualmente.

En cuanto a lo de la "Guía de Estilo de los Foros" que pones al final es porque he hecho algo mal?.

Gracias.

vic_ia 04-07-2004 21:16:51

hola....
Cita:

Empezado por Patxi
En cuanto a lo de la "Guía de Estilo de los Foros" que pones al final es porque he hecho algo mal?.
Gracias.

no, solo es su "firma", aunque como dicen en su mensaje debieras de dar un poco mas de datos para que alguna persono pueda tener idea exacta de tu problema, y bueno no seria mala idea siempre darle una miradita a la guia de estilo,... bueno volviendo al mensaje de marcos su pregunta se refiere a que si has colocado algun codigo en los eventos tales como "OnClose", u "OnCloseQuery" o similares, pues tal vez estos podrian ser los causantes de que tu programa no se cierre completamente...

aparte de todo esto yo te sugeriria checaras que no hubiera algunas cosas "externas" que estuvieran causando algun fallo a tu aplicación y que no necesariamente fueran de programación, como por ejemplo archivos basura que estuvieran impidiendo la buena compilación de tu programa...

saludos...

marcoszorrilla 04-07-2004 22:27:34

Según te ha explicado muy bien Vic_ia, no es que hayas hecho nada mal, es mi firma es decir en todos los mensajes que escribo sale exactamente lo mismo.

En cuanto a que des mas detalles como te indicaba yo y también lo hace Vic_ia, también puede ocurrir que crees un determinado componenente y luego no lo liberes correctamente......

Si no tienes mucha experiencia y la aplicación tiene pocos formularios, copiala a otro carpeta, dejas solo el menu activo sino falla, le vas añadiendo los formularios que tienes uno a uno y en el momento que falle sabrás a partir del uso de que formulario se ha producido el error.

Quiero decir, añades un formulario, recompilas, abres aplicación utilizas todas sus funciones y cierras así hasta obtener el fallo....

Un Saludo.

Gydba 05-07-2004 14:19:49

Hola,

Si es un problema de que quedan forms abiertos algo sencillo sería realizar un procedimiento que recorra todos los forms del objeto screen y que los cierre al salir de la aplicación.

Saludos...

Patxi 08-07-2004 11:04:55

Hola, bueno, lo primero gracias a todos y lo segundo es que en uno de los formularios utilizo el CX-Server de Omron para comunicar con un autómata y por lo visto ese se queda residente. Lo que no sé es como lo voy a eliminar al
cerrar la aplicación.
Saludos.

jachguate 08-07-2004 15:07:03

Si estas seguro que ese es el problema, podes valerte del evento onClose del formulario principal, o bien del que contiene el server, y asegurarte de cerrarlo, desactivarlo o lo necesario para que "caiga", que en todo caso, debiera estar documentado por el fabricante del componente.

Hasta luego.

;)

Pablo Carlos 08-07-2004 23:55:15

Preguntonta ¿liberas los form de la memoria en tu código?

delphi.com.ar 09-07-2004 02:57:57

Cita:

Empezado por Pablo Carlos
¿liberas los form de la memoria en tu código?

Es una pregunta muy abierta.. Mi respuesta es: “dependiendo de la situación", por ejemplo: en un esquema MDI, dejo que los MDIChilds se liberen solos, salvo algunos casos particulares, y si el usuario cierra la aplicación, como el Owner de todos estos formularios es el MDIForm, este se encarga de liberarlos. Cuando creo un formulario Modal, en cuanto prescindo de este lo libero, como a cualquier objeto.
En un esquema de formularios independientes, recomiendo que los formularios sean“propiedad” del objeto Application, si esto es posible, este objeto se encargará de liberarlos cuando este se destruya.

http://www.clubdelphi.com/foros/showthread.php?t=4296

Saludos!

Patxi 09-07-2004 21:09:04

Hola, con lo diberar las Forms no sé a que te refieres, lo que yo he hecho ha sido añadir unas cuantas Forms además de la principal, en lo de Opciones de Proyecto las he puesto que se auto creen, cada una se está ejecutando a su aire y cuando las necesito, desde el principal las saco a primer plano con un p.e. fPLC.Show que es una de ellas.
Cuando quiero terminar, cierro las que están haciedo algoy luego la principal.
De todas formas, hay dos cosas para mí raras, una es que cuando lo ejecuto desde el IDE todo se cierra y termina perfectamente y la otra es que la form que tiene el CX-Server, si la ejecuto ella sola, como proyecto independiente, también se termina todo felizmente, por lo que creo que aparte de hacer fPLC.Close hay que hacer algo más.
Saludos.

marcoszorrilla 09-07-2004 22:31:14

Cita:

en lo de Opciones de Proyecto las he puesto que se auto creen, cada una se está ejecutando a su aire...
Solo se debe de autocrear el formulario principal y quizás algún datamodulo si es que se utiliza de manera permanente, todos los demas deben de estar como disponibles "availables", puesto de la manera que indicas estás consumindo memoria de manera innecesaria.

Cuando haya que activar un formulario de los disponibles:

Código Delphi [-]
Application.CreateForm(TMiFormulario, MiFormulario);
MiFormulario.ShowModal;

En el evento OnClose del formulario:

Código Delphi [-]
Action:=CaFree;

Para que libere todos los recursos que estuviera utilizando.

Un Saludo.

Pablo Carlos 11-07-2004 17:03:22

Me refiero a que cuando termines de usar el form lo descargas de memoria... lo que yo hago es crearlos y liberarlos cada vez que necesito entre bloques try... finally... por ejemplo

Miform := TMiform.Create(Application);
try
Miform.ShowModal;
finally
Miform.Free
end;
y por su puesto en project ----> option no esta disponible al abrir la aplicación. De esta manera me aseguro que no quede nada en memoria

Saludos

Patxi 12-07-2004 09:28:21

Mira, lo que sucede es que aparte de la Form principal están corriendo tres forms que cada una esta está haciendo una serie de cosas y que se comunican con la principal, y que cuando necesito trabajar con una de ellas la pongo activacon un .Show no modal.
De hecho la principal está en un monitor y las otras en otro.

Saludos y muchas gracias.
Por cierto si pudiéras ayudarme en la consulta que he hecho "Esperar a terminar algo " sería ya estupendo.


La franja horaria es GMT +2. Ahora son las 13:09:15.

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