Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Servicios Windows y Thread con OCR (https://www.clubdelphi.com/foros/showthread.php?t=72393)

Paulao 16-02-2011 13:05:27

Servicios Windows y Thread con OCR
 
Mira, necesito hacer una mejoria en un software semana que viene y no lo se aun como hacer. Este es el cenario.
Hay que hacer vários scanner de vários documientos por dia(300 o mas), generando un archivo OCR. Esto ya se lo hace manualmente. Lo que deve ser hecho ahora es:
Crea un servicio Windows. Y quando este servicio for startado, deve se iniciar una Thread y dentro desa Thread comienzar los scanners de los documentos y la generacion de ellos. Y deve ser asi: Sy un documento for 90% o mas de calidad, este esta aprobado si no, es desechado(descartado, no se se es asi q escribe) y vulve a ser scaneado nuevamente. Todo debe ser automatico, sin la presencia de mano. Impiezó el Windows Service, si abre una Thread y si lo hace. Ellos quieren en una Thread, para que la aplicación no se queda paralisada mientras se va haciendo el scaneamiento de las imagens. Una Thread con prioridad baja.
No se como se hace estas cosas. Mi gustaria de una ayuda de los maestros deste forum. Gracias desde ahora!!

rgstuamigo 16-02-2011 15:22:31

Pues básicamente debes crearte una clase descendiente de la clase TThread y sobre-escribir(Override) el método Execute;), inclusive Delphi te ayuda a crear dicha clase, pues tiene un asistente(Wizard) que te lo hace todo;) ; en Delphi 7 yo lo hago así:
Me voy al menú File>New>Other... En la ventanita que te parece, debes seleccionar dentro de la ficha(pestaña) "New" la opcion "Thread Object" pulsamos el boton "Ok" y nos va a salir otra ventanita donde debemos indicarle el nombre de nuestra clase(class Name); en mi caso yo le he puesto por nombre de clase "TMyHilo", vos si querés le puedes poner cualquier nombre, en la opcion que dice Thread name lo puedes dejar en blanco,luego presionamos el boton "OK" y Delphi creará una unidad nueva, la cual contendrá el esqueleto de una nueva clase descendiente de TThread, inclusive con el método Execute override, listo para empezar a programar...;)
Bueno aquí está como queda:
Código Delphi [-]
unit Unit2;

interface

uses
  Classes;

type
  TMyHilo = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TMyHilo.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TMyHilo }

procedure TMyHilo.Execute;
begin
  { Place thread code here }
end;

end.
Para ponerle prioridad Baja al Hilo se utiliza la propiedad "Priority" por ejemplo voy a crear una Instancia de mi clase TMyHilo:
Código Delphi [-]
var
hilo: TMyHilo; { TMyHilo es un descendiente de TThread }
begin
  hilo := TMyHilo.Create(True); { crear suspendido - "hilo" no se ejecuta aún }
  hilo.Priority := tpLower; { establecer la prioridad a la baja de lo normal,
 si queremos más baja aún podemos asignarle "tpLowest",
para más informacion buscar "TThreadPriority type" en la Ayuda de Delphi ;) }
  hilo.Resume; { Ahora corre el hilo, eso quiere decir que el hilo ejecuta su método "Execute"}
end;
Espero haberte podido ayudar...
Saludos...:)

Paulao 16-02-2011 15:33:46

Bueno, lo hizo asi y funciono. Y ahora como hago para startar un servicio Windows y el ya startar mi thread que hizo.

rgstuamigo 16-02-2011 16:31:19

Para crear un servicio debes crearte una "Aplicacion Servicio" es como crearte una nueva aplicacion, con la direfencia que ésta es de "Servicio",para lo cual te recomiendo guiarte con éste muy buen tutorial que te explica todo;)
Nota: Cabe destacar que es en una "aplicacion Servico" donde debes crearte tu clase Thread , para que lo puedas usar ahí mismo.;)
Saludos...;)


La franja horaria es GMT +2. Ahora son las 19:56:00.

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