PDA

Ver la Versión Completa : Parámetros de inicio


Angel.Matilla
21-12-2018, 11:25:01
Estaba viendo cómo ejecutar una aplicación con un parámetro de inicio; no lo había hecho nunca y no sabía como se tenía que implementar.Entendí que hay que incluir la lista de parámetros en el arranque así:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR Arranque, int)
La verdad es que muchísimo más sencillo de lo que pensaba, pero tengo una duda: ¿Cómo puedo ejecutar dicha aplicación en modo depuración indicando un parámetro de arranque? No sé como lanzar el depurador indicando ese parámetro.

Angel.Matilla
21-12-2018, 13:37:40
:o:o ¡Olvidaros de la pregunta que era una estupidez!

Ñuño Martínez
21-12-2018, 13:57:02
No te creas, que no es tan estúpida. Por si alguien se lo pregunta, voy a responder.

El tema es que C recibe estos parámetros a través de los parámetros de la función main:

int main (int num_args, char *argumento[]) { ... }


El problema es que, dentro de Windows, esta función la implementa el propio Windows, y lo que hace es concatenar los argumentos y pasarlos en la llamada a WinMain. El resto lo tienes que hacer tú, es decir, analizar el parámetro (el tercero) y actuar en consecuencia.

La ventaja de Pascal es que desde hace mucho incluye las funciones ParamCnt y ParamStr (las funciones main y WinMain están implementada por la RTL correspondiente), lo que hace no haya diferencias si programas para Windows o para cualquier otro sistema operativo. De todas formas, si no recuerdo mal, Borland C/C++ también incluye estas funciones como parte de su biblioteca (¿brdlib se llamaba? no recuerdo, pero evidentemente no era la stdlib).

En cuanto a la depuración, hay una opción en el menú de ejecución (si usas IDE) donde puedes indicarle los parámetros. Si se usa GDB basta con añadir la opcion "--args" antes del nombre del programa, por ejemplo:
#>gdb --args ./programa -argumento valor