Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Retornar valores al programa inicial (https://www.clubdelphi.com/foros/showthread.php?t=86538)

verde_esmeralda 28-08-2014 18:11:20

Retornar valores al programa inicial
 
Hola, que tal, espero me pudieran ayudar, mi cuestión es la siguiente, tengo dos programas,
uno de ellos manda llamar al otro programa, este segundo programa realiza
su procesamiento, pero necesito que este segundo le regrese valores al programa que lo mando llamar,
utilice variables de ambiente, pero los valores son nulos, :confused: , no se si esto es posible :(

mamcx 28-08-2014 18:44:33

Y como llamas al segundo programa?

verde_esmeralda 28-08-2014 18:56:19

Mira es con esta linea :

if( spawnl(P_WAIT,"programa2", "programa2",NULL) == -1 )
{
ShowMessage("No pude ejecutar programa2");
exit(1);
}

Casimiro Notevi 28-08-2014 19:22:40

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

ecfisa 28-08-2014 20:24:53

Hola verde_esmeralda.

La función spawnl devuelve el valor entregado por el proceso invocado o el valor -1 y la variable erno encendida si hubo un error.

Es decir que si tenemos pru.exe compilado del código:
Código:

int main() {
  return 1559; /* valor de retorno */
}

Y lo invocamos con la función spawnl de este modo:
Código:

#include <stdio.h>
#include <process.h>
#include <errno.h>

int main() {
  int res = spawnl(P_WAIT, "PRU.EXE",  "PRU.EXE", NULL);

  if (res == -1)      /* ¿ Hubo error ? */
    perror("Error");  /* Mostrarlo */
  else                /* Todo ok */
    printf("pru.exe finaliza con el valor: %d", res); /*  1559 */

  printf("\n\nPulse Enter para finalizar");
  while ((getchar())!='\n');
  return 0;
}

Nos mostrará un mensaje con el valor 1559 u otro de error (de haber sucedido uno).

Saludos :)

verde_esmeralda 28-08-2014 21:14:55

Gracias ecfisa,
Lo que pasa es que se que la instrucción spawnl solo admite valores enteros, es lo que tengo entendido,
pero necesito regresar mas de un valor al programa que manda llamar al otro,
y estos valores son de tipo cadena, es por eso que intente mandarlas como variables de ambiente,
pero el programa origen las recibe vacías.


La franja horaria es GMT +2. Ahora son las 15:53: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