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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2017
EagleKingson EagleKingson is offline
Registrado
NULL
 
Registrado: abr 2015
Posts: 8
Poder: 0
EagleKingson Va por buen camino
Generar línea {$R *.TLB}

Hola a todos. Tengo una duda respecto aun servicio de windows que estoy desarrollando en Delphi.

Generé mi servicio y para probar con el debug, todas mis funciones las mandaba a llamar desde el OnCreate, con eso no tengo problema, hace todo perfectamente, pero al momento de pasar mis funciones al evento OnExecute para ya poder instalar el servicio, este no se puede iniciarm ya que me manda el error de "El servicio xx en Equipo Local se inicio y después se detuvo. Algunos servicios se detienen automáticamente si no son usados por ningún servicio o programa".

Este es mi código en el OnCreate:

Código Delphi [-]
procedure TGLOCEDI01.ServiceExecute(Sender: TService);
var
  IntervaloConexion : String;
begin
  EscribeLog(formatDateTime('yyyymmdd hh:mm:ss', now)  + 'Iniciando Servicio...',
                       GetCurrentDir + '\Log\Log'+ FormatDatetime('yyyymmdd',now)+'.txt');

  InicializaVariables();
  RealizaConexion();                       
  IntervaloConexion := ExtraDatoTablaGen(127,3);
  if IntervaloConexion = '' then
    IntervaloConexion := '30000';

  EscribeLog(formatDateTime('yyyymmdd hh:mm:ss', now)  + 'Activa Timer - Intervalo Conexión: ' + IntervaloConexion,
                       GetCurrentDir + '\Log\Log'+ FormatDatetime('yyyymmdd',now)+'.txt');      
  Timer1.Interval := StrToInt(IntervaloConexion);
  Timer1.Enabled := True;

  while not Terminated do
  begin
    ServiceThread.ProcessRequests(True); //wait for termination;
    Timer1.Enabled := False;
  end;
end;

En cuanto al título de mi pergunta, para hacer este servicio me basé en otro que me pasaron, al parecer hice exactamente lo mismo pero no funciona (lamentablemente la persona que lo hizo ya no se encuentra por aquí). De lo que me percaté es que existe esta línea que tiene el servicio que me pasaron y que mi aplicación no la genera (según yo, debería generarse automáticamente):

Código Delphi [-]
{$R *.TLB}

No sé si esa sea la razón de que mi servicio no se inicie correctamente, pero no sé cómo hacer para que se genere esa línea.

ACTUALIZACIÓN: Olvidé mencionar que trabajo con D5 y la línea se genera en el archivo .dpr donde se declaran todas la unidades.

Espero y me puedan echar una mano y les agradezco.
Responder Con Cita
  #2  
Antiguo 22-05-2017
Avatar de mallenat
mallenat mallenat is offline
Miembro
 
Registrado: oct 2003
Posts: 18
Poder: 0
mallenat Va por buen camino
Hola, el problema lo tienes en el bucle principal:
Código Delphi [-]
while not Terminated do
begin
    ServiceThread.ProcessRequests(True); //wait for termination;
    Timer1.Enabled := False;
end;

Procesas lo que hay pendiente y paras el timer, con lo que el timer no llega a ejecutarse. Debes parar el timer fuera del bucle y controlar la terminación del servicio desde la ejecución del Timer
Código Delphi [-]
while not Terminated do
begin
    ServiceThread.ProcessRequests(True); //wait for termination;
end;
Timer1.Enabled := False;

Tienes un ejemplo aqui: http://www.clubdelphi.com/foros/show...31&postcount=6
__________________
Mallenat

Última edición por Casimiro Notevi fecha: 22-05-2017 a las 12:43:33.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calcular saldo linea a linea fwhite Varios 1 27-02-2012 17:14:30
Impresion linea por linea en tiquete de caja Livey Impresión 2 21-12-2010 00:21:05
mostrar fichero linea a linea torete_86 C++ Builder 4 30-01-2006 20:14:39
Traza linea por linea problemas zugazua2001 Varios 2 24-10-2005 08:16:32
¿Cómo borrar un grid sin tener que ir línea a línea? Isaac Varios 2 18-02-2004 16:13:14


La franja horaria es GMT +2. Ahora son las 00:13:08.


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