![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Se me ocurre que quizas podrías utilizar la funcion:
WinExec(PChar('Direccon del ejecutable + parametros'), Tipo de visualización) Podrias utilizar ésta funcion para ejecutar el programa binario en modo DOS. Además puedes colocar parametros al mandar llamar el binario para que te despliegue la información que deseas. Como por ejemplo: WinExec(PChar('C:\windows\notepad File.txt', SW_SHOWNORMAL); abre el block de notas y te crea un archivo llamado File de extensión "txt". Podrias utilizar algo parecido, el problema seria en como podrias capturar los resultados que te despliega el sistema e importarlos a Delphi. No soy un experto en esto pero te dejo una parte de una posible solución. Suerte y si lo puedes hacer nos dices como te fue y como le hiciste jaja. |
|
#2
|
|||
|
|||
|
Hola, al fin conseguí resolverlo, por si a alguien le sirve les cuento como hice. La aplicación que yo necesito ejecutar desde Delphi, se ejecuta bajo Windows a través de un prompt de DOS, creo que en Linux y Unix es distinto.
Lo que hice fue usar la función ExecuteFile, que está declarada en la unit FmxUtils, que se encuentra en Delphi/Demos/Doc/Filmanex, esta función hace uso de la función ShellExecute de la API de Windows: ExecuteFile(const FileName, Params, DefaultDir: string; ShowCmd: Integer): THandle; Bueno, como mi aplicación se ejecuta mediante un prompt de DOS, lo que hice fue crear un archivo bat con las instrucciones para DOS, y finalmente hago uso de la función dicha: ExecuteFile('c:\mybat.bat', '', '', SW_SHOWNORMAL); En internet hay varios ejemplos de como utilizar esta función con ditintas aplicaciones. Bueno, espero que a alguien le sirva esto. Saludos Erika |
|
#3
|
||||
|
||||
|
Hola Erika.
Cita:
Cita:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#4
|
|||
|
|||
|
Te cuento, los datos los envio a través del archivo bat que yo cree, que es el siguiente:
C:\ cd.. cd ncbi-blast\sequence blastall -p blastx -d globins -i fugu_globin>resultados_test donde en la última línea, blastall es el programa que yo quiero ejecutar, blastx vendría siendo la sentencia dentro de ese programa que quiero ejecutar, globins es la base de datos que le paso y fugu_globin mi entrada, y guardo los resultados en el archivo resultados_test. Esto yo lo hice con un archivo bat porque se ejecuta en DOS. Si te fijás en la función ExecuteFile: ExecuteFile(const FileName, Params, DefaultDir: string; ShowCmd: Integer): THandle; Params son los parámetros de entrada - salida del programa que vos querés ejecutar, pero es necesario que el programa a ejecutar tenga parámetros de salida para poder obtener una salida, en mi caso, si yo hubiera podido ejecutar directamente el programa en vez de usar un archivo bat, habria sido: ExecuteFile('blastall', '-p blastx -d globins -i fugu_globin>resultados_test', 'c:/ncbi-blast\sequence' , SW_SHOWNORMAL) pero esto Delphi no me lo aceptaba, no sé porque. La cuestión es que los datos que yo necesito recibir a Delphi, en realidad están guardados en un archivo (resultados_test), que tengo que leer desde Delphi. Espero que se haya entendido. Saludos Erika |
|
#5
|
||||
|
||||
|
Hola Erika.
Cita:
![]() Cita:
![]() Cita:
ya me estas haciendo dudar... ![]() Cita:
Ahora no recuerdo exactamente el parámetro, pero creo que era /C algo como:
debiera funcionar. Date cuenta que ahora mandamos a ejecutar el interprete de comandos y via parámetros le indicamos cual es el comando a ejecutar: en este caso, el blastall mas la lista de parámetros y por último la redirección. Esto es equivalente a escribir la cadena en una sesion del interprete. Ojo, que el interprete de comandos es mejor leerlo de la variable de entorno COMSPEC, puesto que su ubicación y nombre varia entre instalaciones y versiones de windows. Otra posible solución es mediante un PIPE del sistema redireccionar directamente la salida del programa y recogerla en un TStrings, por ejemplo. Para ello te recomiendo consultar los mensajes en este mismo foro y la ayuda de la función CreateProccess del api de windows. Ambas soluciones son mas complicadas en principio que el bat, pero te dan independencia de este. hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#6
|
|||
|
|||
|
Juan gracias por tus aportes, voy a usarlos porque me parece que voy a tener que usar directamente la función ShellExecute ya que necesito saber cuando termina de ejecutarse el otro programa para poder leer el archivo que genera.
Con respecto a los parámetros de salida tenés toda la razón, yo me expresé mal , en realidad yo necesitaba alguna forma de poder acceder a los resultados de la otra aplicación desde Delphi y consideré "parámetro de salida" como el archivo que genera la otra aplicación. Pero, como vos decís, no sé si desde Delphi podés recibir parámetros de otra aplicación.Bueno, otra vez gracias por todo y perdón por no haberme expresado bien. Saludos Erika |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|