FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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 |
#2
|
|||
|
|||
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 |
#3
|
||||
|
||||
Hola Erika.
Cita:
Cita:
Cita:
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 |
#4
|
|||
|
|||
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 |
|
|
|