Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Añadir llamada desde consola a una App normal (https://www.clubdelphi.com/foros/showthread.php?t=71320)

Bauhaus1975 13-12-2010 20:46:15

Añadir llamada desde consola a una App normal
 
Muy buenas de nuevo.
Tiempo hacía que no escribía por aquí. Resulta que tengo una aplicación en BDS 2005 que realiza una serie de cálculos y los vuelca a fichero, La app está basada en formularios normales etc. todo esto perfecto.

Resulta que se requiere llamar a la aplicación por consola de modo que se pudieran aprovechar procesos 'Batch' con diferentes combinaciones de parámetros, para que a partir de uno de estos ficheros con diferentes combinaciones 'al día siguiente' tengamos los resultados en los respectivos ficheros de salida.

No sé si me he explicado bien (Espero que sí), el caso es que mi duda es que no sé como puedo hacer para que desde consola se pueda llamar a un método o proceso particular de la aplicación, con una serie de parámetros, como el fichero de salida etc.

¿Puede alguien ayudarme?
Muchas gracias y un saludo.

luisgutierrezb 13-12-2010 21:49:08

pues lo unico que se me ocurre es que utilices parametros en tu aplicacion de formularios para procesar lo que se mande desde la consola

Bauhaus1975 14-12-2010 09:33:48

Gracias luisgutierrezb
¿Pero cómo hago para que cuando se llame el programa desde consola, pueda pasar ejecución a dónde yo quiera?

Un saludo.

Casimiro Notevi 14-12-2010 11:00:55

Cita:

Empezado por Bauhaus1975 (Mensaje 384900)
Gracias luisgutierrezb
¿Pero cómo hago para que cuando se llame el programa desde consola, pueda pasar ejecución a dónde yo quiera?
Un saludo.

Según los parámetros que determines, por ejemplo:

miprograma.exe hola

En tu código debes controlar el paramstr[1] en este caso, el [0] es el propio nombre del programa, en este caso "miprograma.exe".
Pues a lo que iba, en el oncreate, por ejemplo, lo controlas:

Código Delphi [-]
if paramstr[1].asstring<>'' then
  showmessage(paramstr[1].asstring);   <--- hacer lo que quieras

Es un ejemplillo tonto, pero para que te hagas una idea.

Bauhaus1975 14-12-2010 13:46:40

¡Muy buenas Casimiro Notevi! tiempo si ver a mi vecino...

Voy a probar lo que me recomiendas.
En resumen te refieres a que detecte si se inició el programa desde consola, simplemente si existe algún parámetro, y en ese caso evitar mostrar formularios y llamar al proceso que corresponda. (voy a probarlo)

Gracias y un saludo.

Casimiro Notevi 14-12-2010 16:52:24

Sí, efectivamente, y mejor todavía... si el programa no necesita presentación de formularios ni nada... entonces es mejor hacer un programa de "consola".

Bauhaus1975 15-12-2010 15:31:29

Cita:

Empezado por Casimiro Notevi (Mensaje 384932)
Sí, efectivamente, y mejor todavía... si el programa no necesita presentación de formularios ni nada... entonces es mejor hacer un programa de "consola".

No puedo hacer el programa entero de consola pues hay una gran maquinaria detrás, y la opción de ejecutar desde consola es para poder trabajar procesos en lote para uno de los cálculos que este programa ofrece.

Bueno, voy a intentarlo y si tengo más dudas ya os planteo mis dudas.
Muchas gracias y un saludo.

Bauhaus1975 16-12-2010 21:47:07

Hola de nuevo... Un par de cosillas

Cita:

Empezado por Casimiro Notevi (Mensaje 384903)
Según los parámetros que determines, por ejemplo:

Código Delphi [-]

if paramstr[1].asstring<>'' then
showmessage(paramstr[1].asstring); <--- hacer lo que quieras


Bueno aclarar por si alguien necesita esta información, que paramstr es una función System.Paramstr(ordParam), en vez de un array, quizás te traiciónó la memoria.
(También creo que puedo usar System.ParamCount para validar los parámetros que vienen)

Pero mi duda ahora es:
No sé como hacer un debug como si hubiera llamado el programa desde consola. He intentado añadir parámetros en 'Run->Parameters' pero creo que esto no tiene nada que ver pues no salta la condición para detectar consola.

¿Alguna idea?... Gracias!


La franja horaria es GMT +2. Ahora son las 22:53:41.

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