Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Servicio iniciado pero no hace nada (https://www.clubdelphi.com/foros/showthread.php?t=62518)

NasgulMA 30-12-2008 11:39:41

Servicio iniciado pero no hace nada
 
Hola a todos.
Antes que nada dar las gracias por ayudar a entender un poco mas este mundo maravilloso del delphi.

Bueno a lo que voy he creado e instalado un servicio en windows 2003 server que apartir de un fichero que esta en un sitio ftp actualiza una base de datos de SQL Server 2005. Funciona perfecto en el momento de instalarlo o si ejecuto el exe directamente pero al reiniciar el ordenador el servicio se inicia y si miro el administrador de tareas el exe se esta ejecutando pero no actualiza la base de datos es como si estubiera en pausa.

Este es el codigo del servicio a ver si alguien me puede decir que hago mal o darme alguna idea.


Código Delphi [-]
program ServicioRes1;
uses
  SvcMgr,
  SysUtils,
  Unit1 in 'Unit1.pas' {ServiceRes1: TService},
  UVariables in 'UVariables.pas';
{$R *.RES}
begin
  // Windows 2003 Server requires StartServiceCtrlDispatcher to be
  // called before CoRegisterClassObject, which can be called indirectly
  // by Application.Initialize. TServiceApplication.DelayInitialize allows
  // Application.Initialize to be called from TService.Main (after
  // StartServiceCtrlDispatcher has been called).
  //
  // Delayed initialization of the Application object may affect
  // events which then occur prior to initialization, such as
  // TService.OnCreate. It is only recommended if the ServiceApplication
  // registers a class object with OLE and is intended for use with
  // Windows 2003 Server.
  //
  // Application.DelayInitialize := True;
  //
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TServiceRes1, ServiceRes1);
  Application.Run;
  while True do
  begin
    sleep(300000);
    ServiceRes1.ActualizarReservas;
  end;
end.

Bueno un saludo para todos.

Neftali [Germán.Estévez] 30-12-2008 11:47:07

¿Has revisado el visor de eventos del sistema?
¿talvez tenga algun problema? ¿Conexión?

También puedes crear un Log en disco, con las operacionmes que va realizando, a ver en qué momento hay algun problema....

Código Delphi [-]
procedure _Log(Str:string);
const
  FileName = 'c:\logService.txt';
var
  F: TextFile;
begin
  AssignFile(f,FileName);
  if FileExists(FileName) then begin
    Append(f)
  end
  else begin
    Rewrite(f);
  end;

  // Escribir
  writeln(f, DateTimeToStr(Now) + '  ->> ' + Str);
  CloseFile(f);

Basa con que vayas llamado al procedimiento a medida que vayas haciendo cosas:

Código Delphi [-]
  ...
  _Log('Conectando...');
  ...
  _Log('Conectado correctamente');
  ...

NasgulMA 30-12-2008 12:23:33

Gracias por responder tan rapido voy a probarlo ya mismo.

NasgulMA 30-12-2008 13:04:20

Hola otra vez he creado el log en disco y es muy curioso porque inicio el servicio pero nunca llega a ejecutar la llamada a

ServiceRes1.ActualizarReservas;

y no crea el log en disco. Pero al detener el servicio y antes de que se cierre el ejecutable me crea el log como si entrara en la llamada.

Neftali [Germán.Estévez] 30-12-2008 13:34:15

No entiendo mucho de servicios, tal vez se te esté quedando en el RUN. :confused::confused::confused:

Porque no pones un timer en tu formulario (ServiceRes1) y ahí desde ese timer (cada 60 sg) vas ejecutando el ActualizarReservas.

cHackAll 30-12-2008 16:41:22

Hay una falla en el esqueleto de tu servicio, revisa éste articulo.

Saludos

NasgulMA 30-12-2008 18:24:42

Gracias a todos por la ayuda, ya esta funcionando al final he puesto el timer en el formulario como decia Neftali y quitando de la declaracion del servicio el bucle a funcionar perfectamente.

Gracias otra vez por la ayuda y por la rapidez.


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

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