Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Parámetros de inicio (https://www.clubdelphi.com/foros/showthread.php?t=93658)

Angel.Matilla 21-12-2018 11:25:01

Parámetros de inicio
 
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í:

Código:

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:
Código:

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:
Código:

#>gdb --args ./programa -argumento valor


La franja horaria es GMT +2. Ahora son las 09:49:50.

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