Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Mostrar ventana con cuaderno de bitácora en programa automático

Pues estaba yo codificando y me he dado cuenta de un detalle tonto.

Tengo que hacer un programa que funciona solo. Se le mete en el "programador de eventos" para que se ejecute, por ejemplo, cada 24h y él trabaja solito y cuando termina su tarea pues se cierra y hasta la siguiente. Se me ocurrió que, en lugar de ser silencioso, abriera una ventana principal con TMemo de sólo lectura en el que fuera escribiendo qué es lo que va haciendo y, cuando termine, que lo vuelque todo en un archivo de texto a modo de cuaderno de bitácora (log). Si se produce un error durante la ejecución, el programa no se cierra y así se puede ver cuándo ha fallado y qué es lo que estaba haciendo cuando se rompió. Hasta aquí todo bien.

Ahora viene lo gordo. Estoy utilizando el evento OnCreate para inicializar el programa, pero no sé como "comenzar el trabajo". Por ahora he hecho algo así como:
Código Delphi [-]
  (* TVentanaPrincipal::FormCreate:
   *   Inicialización, en respuesta a la creación de la ventana. *)
  procedure TVentanaPrincipal.FormCreate(Sender: TObject);
  begin
    Log ('Inicio del programa');
    InicializaPrograma;
    Log ('Carga la configuración');
    Configuracion := DVC_CONFIGURACION.create;
    Configuracion.LeerDe (NombreArchivoConf);
    EscribeConsola (LogTab + 'Configuración leída');
  { Mostramos la ventana. }
    WindowState := wsNormal;
    Show;
  { Lo ponemos a trabajar. }
     RealizaTrabajo;
  end;
Pero claro, no me parece muy correcto y aunque por ahora funciona tal vez me de problemas más adelante. También había pensado en quitar el "Show" y el "RealizaTrabajo" de este evento y ponerlas en el evento "onShow", pero tampoco. Como el trabajo (por ahora) es muy corto el progama termina casi antes de mostrar la ventana, en ambos casos, así que no sé si lo hace bien o no.

Se me había ocurrido hacerlo todo en el módulo principal (el archivo "dpr"). Ahora este archivo es así:
Código Delphi [-]
 begin
   TRY
     Application.Initialize;
     Application.CreateForm(TVentanaPrincipal, VentanaPrincipal);
     Application.Run;
   EXCEPT
     ON E:Exception DO
       ShowMessage ('¡¡¡¡¡¡Excepción incontrolable!!!!!!' + #13 + E.Message);
   END;
 end;
Y yo querría hacer algo así como:
Código Delphi [-]
  begin
    TRY
      Application.Initialize;
      Application.CreateForm(TVentanaPrincipal, VentanaPrincipal);
     WITH VentanaPrincipal DO
     BEGIN
       Log ('Inicio del programa');
       InicializaPrograma;
       Log ('Carga la configuración');
       Configuracion := DVC_CONFIGURACION.create;
       Configuracion.LeerDe (NombreArchivoConf);
       EscribeConsola (LogTab + 'Configuración leída');
     { Mostramos la ventana. }
       WindowState := wsNormal;
       Show;
     { Lo ponemos a trabajar. }
       RealizaTrabajo;
     { Terminamos. }
       Free;
    EXCEPT
      ON E:Exception DO
        ShowMessage ('¡¡¡¡¡¡Excepción incontrolable!!!!!!' + #13 + E.Message);
    END;
  end;
Evidentemente eliminaría todo el código de los eventos de la ventana. Sin embargo, eso de quitar el "Application.Run" no termina de gustarme, y si lo pongo no me ejecutará el resto, ¿o sí?

¿Me arriesgo o alguien conoce una forma mejor de hacerlo?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 19-01-2007 a las 13:25:29. Razón: El título está mal puesto.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:05:22.


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
Copyright 1996-2007 Club Delphi