Search
Portando de FreePascal a Delphi (facilitar multi-plataforma)
Estoy en la fase de crear un mini-servidor de aplicaciones que se ejecutará en Windows & Linux.
He elegido a FreePascal como la herramienta para realizar la labor de portar el código de Delphi (Windows) a esta plataforma. Ya tengo resuelto los problemas mayores y el hecho de que librerias como la de RemObjects este ya portada a FreePascal es un gran alivio.
Sin embargo, siempre en el camino se van encontrando pequeños inconvenientes.
Una función importante del sistema, es su mecanismo de plugins, los cuales por múltiples razones (técnicas & aburridas) decidi invocarlos usando la tecnica “antigua” pero probada de encadenamiento de comandos y por ello necesito invocar de forma transparente scripts & ejecutables redireccionando la salida y los errores (stdin, stderror) de los comandos. Para los que no entiendan, es similar a abrir la consola del DOS y ejecutar “dir .” y capturar el resultado de pantalla, pero todo sin intervencion del usuario y sin que aparezca la ventana del DOS.
Hacer esto es muy simple. El ejemplo clasico se puede ver en este link. Y bueno, como hacerlo multiplataforma?
Se me ocurrio que ya que voy a portar el programa a FreePascal de todas maneras, pues mirar como lo hacen alli. Y encontre la informacion sobre la clase TProcess. Muy bueno y todo, pero ya que el IDE del FreePascal (lazarus) no es tan productivo como el de Delphi y que igual no he terminado el proceso de preparar el sistema para Freepascal me pregunte que tan viable era hacer una transferencia de codigo a la inversa: Del FreePascal al Delphi.
Y resulto ser mas fácil de lo que esperaba!.
(Ubicado en pipes.pas):
Function CreatePipeHandles (Var Inhandle,OutHandle : THandle) : Boolean; begin Result := CreatePipe (@Inhandle,@OutHandle,@piInheritablePipe,PipeBufSize); end;
por:
Function CreatePipeHandles (Var Inhandle,OutHandle : THandle) : Boolean; begin Result := CreatePipe (Inhandle,OutHandle,@piInheritablePipe,0); end;
Y listo!
Search
Signup For Our Newsletter
Enter your email address to subscribe to our newsletter
Comments
Leave a Comment