Ver Mensaje Individual
  #1  
Antiguo 28-12-2014
Nitrogenox Nitrogenox is offline
Registrado
NULL
 
Registrado: dic 2014
Posts: 1
Reputación: 0
Nitrogenox Va por buen camino
Problema programando servicio

Primeramente un saludo para todos los del foro y mencionar que uso Lazarus 1.2.6 sobre Windows 7.

Deseo programar un servicio para correrlo en windows, busque mucho en internet y probe un par de ejemplos que lastimosamente no pudieron solucionar el probelma que tengo. El problema esta en que, si bien al compilar no tengo ningun error, al parecer el servicio no hace lo que esta en la secciones OnExecute, OnStart, etc. no se si es un probelma del IDE o me esta faltanfo algun detalle.

Pongo el codigo que utilice como guia y que aparentemente funciona pero en mi caso no lo hace.

Código Delphi [-]

unit DaemonUnit1;

{$mode objfpc}
{$H+}

interface

uses
  Classes, SysUtils, FileUtil, DaemonApp;

type { TDaemon1 }
  TDaemon1 = class(TDaemon)
    procedure DataModuleExecute(Sender: TCustomDaemon);
    procedure DataModuleShutDown(Sender: TCustomDaemon);
    procedure DataModuleStart(Sender: TCustomDaemon; var OK: boolean);
    procedure DataModuleStop(Sender: TCustomDaemon; var OK: boolean);
  private { private declarations }
  public { public declarations } end;

var
  Daemon1: TDaemon1;
  Log: TextFile;

implementation

procedure RegisterDaemon;
begin
  RegisterDaemonClass(TDaemon1);
end; {$R *.lfm} { TDaemon1 }

procedure TDaemon1.DataModuleExecute(Sender: TCustomDaemon);
begin
  while Self.Status = csRunning do
  begin
    sleep(1000);
    WriteLn(Log, datetimetostr(Now));
    Flush(Log);
    LogMessage(datetimetostr(Now));
  end;
end;

procedure TDaemon1.DataModuleShutDown(Sender: TCustomDaemon);
begin
  WriteLn(Log, 'Shutdown');
  Flush(Log);
end;

procedure TDaemon1.DataModuleStart(Sender: TCustomDaemon; var OK: boolean);
begin
  OK := True;
  WriteLn(Log, 'Start');
  Flush(Log);
end;

procedure TDaemon1.DataModuleStop(Sender: TCustomDaemon; var OK: boolean);
begin
  OK := True;
  WriteLn(Log, 'Stop');
  Flush(Log);
end;

initialization

RegisterDaemon;
AssignFile(Log, 'msaplog.txt');
Rewrite(Log);

end.

Si bien el servicio se instala y corre, no registra cuando el servicio se inicia, detiene o apaga como esta programado. Cada que se inicia el servicio crea el archivo TXT pero no anota nada en él.

Agradecere cualquier ayuda que puedan brindarme, ya que llevo semanas con esto y no puedo hacer que funcione el servicio correctamente.
Gracias.

Última edición por dec fecha: 28-12-2014 a las 19:07:59.
Responder Con Cita