//****************************************************
Blog de Delphi Solidario
Autor: Salvador Jover
Fecha: 22 de Julio de 2011
//****************************************************

Hola:

Es importante que leas estas lineas.

Este ejemplo se ha escrito exclusivamente con fines didacticos y no comerciales, para el Blog de Delphi Solidario, anteriormente Delphi Bsico, y se comparte tal cual y sin ofrecer garantias de su funcionamiento. El cdigo se ha compilado para Delphi XE aunque se ha revisado e incluido en el cdigo,comentada, una de las funciones que le hacia compatible con las versiones ansi del compilador, por lo que, en principio bastara cambiar la funcin LoadFile y sustituirla por la versin ansi, que se encuentra tambin en la unidad UFuncionesauxiliares.pas.   

{
Funcin para Delphi 2007 y anteriores por tema unicode

function LoadFile(const FileName: TFileName): string;
begin
  with TFileStream.Create(FileName,
      fmOpenRead or fmShareDenyWrite) do begin
    try
      SetLength(Result, Size);
      Read(Pointer(Result)^, Size);
    except
      Result := '';  // Deallocates memory
      Free;
      raise;
    end;
    Free;
  end;
end;
}

Como solo se han hecho pruebas con Delphi 2007 y Delphi XE y solo se afecta a esta funcin, no se han introducido directivas de compilacin para discriminar la versin.

Probar el ejecutable:
------------------------------------------------------------
Tras compilar el codigo fuente, si habeis respetado la ruta de las carpetas del proyecto, en la carpeta exe deberiamos tener nuestro ejecutable, que se ha llamado "ModuloImpresion.exe". Lo ejecutais y quedar visible en la barra del sistema. Una vez hecho esto, basta que abrais en el explorador de windows la carpeta ejemplos que tambien existe y copieis uno de ellos a la carpeta del ejecutable. Como resultado, mientras el modulo est activo, lanzar y procesar la tarea existente en el fichero, que unicamente contiene una linea de texto plano con los datos adecuados.

Si no pudierais compilar el ejecutable, por la razon que sea, y deseais que os lo envie, me mandais un correo a salvador@sjover.com. He preferido no incluirlo para evitar posibles problemas de seguridad y virus en la descarga (aunque se testa cualquier fichero binario con el antivirus actualizado).
 

Detalle:
------------------------------------------------------------
Cuando el modulo se encuentra activo, existe un proceso que monitoriza en el sistema operativo la creacin de nuevos ficheros con la extensin que hemos fijado previamente y en la ruta indicada. Al detectar que existe un nuevo fichero, se procesa el mismo hacia una cola de tareas que se responsabilizar de que el texto contenido se procese en la forma deseada.
He dejado algunos ejemplos (3 distintos) donde se lanza una ventana del explorer, una ficha que contiene un browser hacia una url o simplemente una impresin de un listado.

Objetivo:
------------------------------------------------------------
Bsicamente supervivencia pura y dura. Estas lineas de cdigo me permitieron aislar unos modulos de impresin de uno de los programas que gestionaba, de forma que se desubicaron de la gestin principal y de todos los programas, en tanto se decida que hacer con ellos y que decisin tomar. Esto puede permitir en un momento dado, mantener una versin de componentes mientras puedes evolucionar el principal del proyecto. Como me pareci interesante, y de hecho vi cosa positivas en ello, extraje y simplifique el codigo para adecuarlo al blog.

El ejemplo puede complicarse tanto como se quiera, pues admite que puedan ser gestionadas las tareas en hilos secundarios mediante threads. O bien simplificarse, si se desea sustituir la monitorizacin de ficheros por un simple timer que se ejecute cada x segundos. Ya es cosa vuestra decidirlo y depende de vuestras circunstancias concretas.
    

Nota y advertencia:
------------------------------------------------------------
El ejemplo puede utilizar alguna rutina existiente (y conocidas como trucos en Internet en algunos casos). Si proceden de fuentes idenficadas, se ha indicado de que lugar han sido extraidas y si fuera el caso tambin, si han sido modificadas para simplificarlas y adaptarlas al ejemplo. Cualquier indicacin que querais hacer al respecto, me la haceis llegar a salvador@sjover.com.

   
     

  