Página 1 de 1

Llamada a funcion parametrizada

NotaPublicado: Mié Feb 25, 2009 6:23 pm
por psanchez_27
Hola gente, consulta, se puede hacer un " CALL <parametro>" en el diagrama de accion en ves de poner el nombre de la funcion?, el tema es que quiero hacer una sola llamada y de pasarle la funcion a llamar por medio del paramtro, desde ya muchas gracias.

NotaPublicado: Jue Feb 26, 2009 11:51 am
por pacopicon
Hola:

Creo recordar que se puede hacer. Dependerá del lenguaje en el que estás generando. Si estás generando en RPG, te puedes crear un Source Code del tipo CALL &(1: ).

En el Source Code puedes añadir más sentencias RPG según necesites (por ej. para los parámetros).

Cuando vayas generando, ve mirando en el fuente generado a ver como te está sustityuendo los parámetros

Saludos

NotaPublicado: Vie Feb 27, 2009 1:50 pm
por psanchez_27
gracias Paco, pero estoy compilando winc y no funciono.

Re: Llamada a funcion parametrizada

NotaPublicado: Vie Feb 27, 2009 3:19 pm
por Jorge Ubeda
psanchez_27 escribió:Hola gente, consulta, se puede hacer un " CALL <parametro>" en el diagrama de accion en ves de poner el nombre de la funcion?, el tema es que quiero hacer una sola llamada y de pasarle la funcion a llamar por medio del paramtro, desde ya muchas gracias.

Si entiendo bien tu requerimiento, para WinC se puede usar el api StartExecutableProgram, en la librería Winapi.
Internamente, luce así:
WinExec(&(1:), SW_SHOW);, donde el parámetro incluye nombre del ejecutable y parámetros.
Se puede recurrir a una solución más compleja, pero más actualizada (WinExec está "deprecada", porque está diseñada para 16 bits) usando la función Windows CreateProcess.
...Esto suponiendo que haya entendido bien tu problema.

Re: Llamada a funcion parametrizada

NotaPublicado: Jue Mar 05, 2009 1:32 pm
por Dario, Fabini
Siguiendo lo que comenta Jorge, recuerdo haber tenido un problema similar y usar StartExecutableProgram (que es el nuevo API) de WINAPI pattern library pero ejecutando el dispatcher de plex, o sea el comando tendría esta forma:

OB400RC [file name] [impl name] [param1] [param2]...

o mas bien:

"ob400rc c:\gen\tuhf.dll tuhf * 1 2"

esto lo podes encontrar en el help buscando "Command-line parameters"

Claro esta que las .dll deben existir previamente, c++ no es interpretado. Además deberían tener una interfaz idéntica para que la lógica cierre. Con esto podes inventar una especia de polimorfismo, pero muy limitado.

Si ves que este es el camino, podemos ampliar un poco mas la explicación.

NotaPublicado: Mié Mar 11, 2009 11:21 am
por psanchez_27
Gracias Dario, Lo pruebo y cualquier duda aviso.

NotaPublicado: Mié Mar 11, 2009 2:22 pm
por psanchez_27
Muchas Gracias Dario, funciono a la perfeccion, lo unico que noto es que una ves que llamo a una funcion por medio del mensaje creado busca los dll solo donde esta el ejecutable, ni mira primero mi gen, ahy alguna forma de que siga mirando primero mi gen\release?

Re: Llamada a funcion parametrizada

NotaPublicado: Vie Mar 20, 2009 4:01 pm
por Dario, Fabini
psanchez_27 escribió:Muchas Gracias Dario, funciono a la perfeccion, lo unico que noto es que una ves que llamo a una funcion por medio del mensaje creado busca los dll solo donde esta el ejecutable, ni mira primero mi gen, ahy alguna forma de que siga mirando primero mi gen\release?


No recuerdo exactamente como hacerlo pero si pones el path completo lo lograrías, de todas maneras fijate que también lo podes hacer usando tu .EXE (creo que nostros lo hicimos de esta forma) y esto seguiría el path normal de tu aplicación. Suponiendo que estamos llamando a una función front-end.

Siempre en el nombre del dispacher hay que respetar la versión en que estas, se entiende...:

Fijate esta descripción del help

An AllFusion Plex executable program is simply a starting point for running an AllFusion Plex-generated DLL. It does not contain any of the application logic specified in your model. The only application-specific information contained within the .EXE file is its icon (as specified by the Icon File property of the main window).

When you use the Create Exe command, AllFusion Plex makes a renamed copy of a standard .EXE file called OB450RC.EXE. This standard executable program is supplied in the AllFusion Plex BIN sub-directory.

Note: An alternative method of creating an .EXE is to copy and rename the OB450RC.EXE file manually (using Windows File Manager or Explorer, for example). You should also copy and rename the OB450RC.INI file to the same location as the OB450RC.EXE. If you create an .EXE file in this way, it does not have an application-specific icon.

Re: Llamada a funcion parametrizada

NotaPublicado: Vie Mar 27, 2009 8:41 pm
por Dario, Fabini
Hola psanches, nos podrías contar si anda esta última propuesta si es asi podemos cerrar el hilo con la solución final y para que lo utilizaste, siempre es importante dejarlo acentado. Nosotros hcimos la prueba pero nunca lo usamos en concreto.

NotaPublicado: Mié Abr 01, 2009 1:18 pm
por psanchez_27
Disculpa por la tardanza, no respondi al ultimo mensaje por que todavia no pude probarlo, igualmente es un detalle que me hubiese gustado corregir, por lo pronto pude implementar la llamada a funcion parametrizada tal como la explico Dario, y la utilize para llamar a una cantidad finita de funciones dependiendo del nombre de implementacion que reciba el llamado, si alguien necesita hacer algo parecido dejo mi mail laboral pmacchia@fvsa.com, pueden cerrar el tema, gracias.