Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mantener viva la aplicación (https://www.clubdelphi.com/foros/showthread.php?t=61325)

HombreGordo 04-11-2008 09:23:43

Mantener viva la aplicación
 
Buenas :) Quería agradecerles por la ayuda ofrecida en muchas oportunidades que me he estancado en esto de la programación :). Sin embargo, hoy día os traigo otra duda, esta vez no relacionada con bases de datos, pero sí con mantener una aplicación viva. La estructura es la siguiente:
Código Delphi [-]
program Cirrus;

uses
  Windows;

{$R *.res}

begin

end.
Quisiera mantener esa aplicación viva por tiempo indefinido, sin tener que usar una aplicación tipo consola, tal cual sin GUI. Quizás un servicio tambien pueda ser adecuado, pero tampoco se mantiene vivo mucho tiempo (Quizás no lo estoy implementando bien) :(. No he tenido remota idea de como lograr esto, quizás algún loop en espera de algo. Si os sirve de ayuda, es para una aplicación de tipo servidor. :confused:

Gracias de antemano :)

defcon1_es 04-11-2008 10:04:06

¿Y qué se supone que debe hacer?
¿Ocupar RAM o algo mas?

El código que has puesto, no hace nada en absoluto, asi que es normal que conforme lo ejecutes, se termine la ejecucion.

Cuando en delphi creas una nueva aplicacion, en el dpr te pone esto:
Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Si no deseas que se muestre el formulario Form1, pon entre comentarios la linea Application.CreateForm(TForm1, Form1);

Pero sinceramente, no se que utilidad tiene, si no hace nada.
Quizás no he entendido tu problema :confused:

Neftali [Germán.Estévez] 04-11-2008 11:07:42

Cita:

Empezado por HombreGordo (Mensaje 324007)
Quisiera mantener esa aplicación viva por tiempo indefinido, sin tener que usar una aplicación tipo consola, tal cual sin GUI.

¿Qué necesitas que haga la aplicación?
Un servicio te puede servir; También una aplicación con un bucle o con un Timer.

seoane 04-11-2008 11:47:52

Tanto las aplicaciones de consola, como las que tienen ventanas o incluso los servicios necesitan de un bucle que se esta ejecutando continuamente y mantiene la aplicacion "viva". En el caso de las aplicaciones con ventanas es el bucle de mensajes, y no se sale de el hasta que se recibe el mensaje WM_QUIT.

Este hilo puede que te sirva:
http://www.clubdelphi.com/foros/showthread.php?t=43780

HombreGordo 04-11-2008 18:42:29

Gracias :D
 
El hilo que os habéis dejado me ha servido de ayuda para forjar el código necesario para mantener la aplicación viva. Muchas gracias, el código es el siguiente por si alguna otra persona se quedó con la duda:

Código Delphi [-]
program Cirrus;

uses
  IdTCPServer;

{$R *.res}

var
  Server: TIdTCPServer;

begin
  Server:=TIdTCPServer.Create(nil);
  Server.DefaultPort:=23314;
  Server.Greeting.SetReply(200,'Servidor');
  Server.Active:=True;
  while not Server.Active=False do begin
    //Código va aquí... supongo...
  end;
end.
Gracias de nuevo por su atención y ayuda. :)

seoane 04-11-2008 18:55:55

Ten cuidado, porque puede que Indy utilice funciones que necesiten un blucle de mensajes para funcionar. Si ves que no funciona bien, yo empezaria a buscar por ahi ...

seoane 04-11-2008 19:00:14

Y si necesitas un bucle de mensajes echale un vistazo a esto:
http://www.clubdelphi.com/foros/show...66&postcount=3

HombreGordo 04-11-2008 19:17:45

Bueno, hehe.
 
En todo caso si no puedo usar Indy, tengo las librerías de Ararat Synapse para manejar sockets libremente, sin embargo, ahora tengo otra duda por aquí.

¿Alguna vez han podido asignarle a un procedimiento, al un determinado evento de un componente? hmmm, es que me desconecta al cliente porque no he definido un evento OnExecute, y quisiera asignarle un procedure a ese evento, o al evento OnConnect de ese componente Indy. Espero me puedan ayudar con esta :).

Gracias de antemano.

PD: Ese hilo que pusiste ahí me puede servir pronto y ya lo guardé, gracias :D.

EDITADO: Oh, tampoco había pensado que para lograr esto necesitaría un bucle de mensajes para manejar los eventos. Jajaj, gracias por haberlo posteado arriba.

Khronos 04-11-2008 20:40:28

Hola HombreGordo, por lo que se sobre los mensajes de Windows vas a necesitar el handle de una ventana para poder capturar los mensajes de Windows, así que los componentes Indy no te van a funcionar desde una aplicación de consola :o

Salu2

seoane 04-11-2008 20:57:24

Cita:

Empezado por Khronos (Mensaje 324154)
Hola HombreGordo, por lo que se sobre los mensajes de Windows vas a necesitar el handle de una ventana para poder capturar los mensajes de Windows, así que los componentes Indy no te van a funcionar desde una aplicación de consola :o

Salu2

No tiene porque, revisa el mensaje que menciono arriba. Ahí hay un bucle de mensajes y hay un handle por ningún lado
http://www.clubdelphi.com/foros/show...66&postcount=3


La franja horaria es GMT +2. Ahora son las 20:25:28.

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