Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| funcion NTVDN | ENRIQUE | Presentación | 1 | 18 de marzo de 2023 20:13 |
| Obtener la longitud del contenido de una variable | Kuk | Cocina Casera | 12 | 19 de marzo de 2021 19:49 |
| [Duda] Teclas de Funcion F13 - F24 | jotica | PowerCOBOL (ActiveX, v4 - v11) | 6 | 8 de mayo de 2017 12:48 |
| [Sintaxis] Nueva función SUBSTITUTE | Kuk | GnuCOBOL (OpenCOBOL) | 1 | 7 de marzo de 2017 20:34 |
| [Sintaxis] Obtener una ruta en Red | Roger | PowerCOBOL (ActiveX, v4 - v11) | 16 | 1 de mayo de 2015 22:40 |
![]() |
|
Administrador
![]()
|
Amigos, no encuentro ningún modo de obtener la dirección de una función para pasarla por un POINTER.
En los manuales de PowerCOBOL 3, viene PROCEDURE-POINTER como palabra reservada, pero no compila con ello. Pero ese problema lo tengo resuelto simplemente definiendo el puntero como POINTER y pasándolo a las funciones de WinAPI funciona perfectamente (en realidad viene a ser el mismo DWORD de 4 bytes). En PowerCOBOL 9 existe un modo de hacerlo con la sintaxis adaptada de MicroFocus: Código COBOL:
Pero esta sintaxis no funciona en PowerCOBOL 3... Para poder usar la API GetProcAddress la función debe estar en una DLL y definida como exportada (dllexport). Pero esto no me sirve, al menos, incluso si es posible, me complicaría muchísimo las cosas. ¿Alguna idea de cómo podría obtener esa dirección de una función codificada en la "PROCEDURE" de un SHEET? Es que con todas las posibilidades que tiene el Power 3, debe haber un modo de hacerlo. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Administrador
![]()
|
Rapinto, el Depends obtiene las funciones exportadas, las "public" por decirlo de alguna forma. Esas funciones exportadas sólo pueden estar en una DLL, y ser llamadas desde otras aplicaciones (sea DLL o EXE). En este caso hablamos de una funcion interna, que no es visible desde fuera, además en un EXE no se puede exportar funciones porque no son librerías dinámicas...
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Administrador
![]()
|
He intentado de todas las menaras posibles, y he llegado a la conclusión de que simplemente el compilador no acepta PROCEDURE-POINTER. Por lo pronto, declarando un campo como tal ni si quiera compila... Y luego, realmente lo que hace en PowerCOBOL posteriores con la sentencia siguiente:
Código COBOL:
Es simplemente reemplazar PPTR por la dirección de la función, que es calculada justamente a la hora de compilar/linkear (el offset). Con lo cual, es una pena, pero no se puede hacer nada con PROCEDURE-POINTER... NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Senior
![]()
|
La única manera de obtener el puntero de una función es usando la API de Windows, en Windev por ejemplo lo hago así y funciona, hay que obtener primero el handle de la DLL cuando se carga en memoria.
Código WinDev:
Empresa de desarrollo de aplicaciones en COBOL. DASIJE INFORMATICA, S.L. C/ TOMAS BRETON 20 11406 JEREZ DE LA FRONTERA CADIZ Teléfono : 956 11 21 11 Web: http://www.dasije.es / DASIJE INFORMATICA E-m@il: clientes(@)dasije.es |
||||||||
|
|
|
|
Administrador
![]()
|
Dasije, esto funciona con una DLL pero no con un EXE porque el último normalmente no exporta ninguna función secundaria.
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||