FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Funcion en DLL pasar de C++ a Delphi
Hola compañeros.
Estoy tratando de trasladar un codigo escrito en C++ que llama a funciones de una DLL a Delphi. El procedimiento basico esta hecho pero no comprendo o no se bien como pasar los parametros, Escribo el codigo C++ Código:
struct MELDEVICEDATA DWORD dwDeviceType; /* Device type (Set DEVICETYPE_TCP.) */ APIDEVICE uniDeviceInfo; /* Device information */ struct APIDEVICE struct Tcp char IPAddr[16]; /* IP address (e.g. “192.168.100.1”) */ long lPortNo; /* Port No. (Set 683 (fixed value).) */ char dummy[12]; /* Reserved */ DWORD WINAPI melIoctl( HWND hWnd, long lAddress, long lFunction, LPVOID lpData ); ): Longint; stdcall; /* function in DLL */ void setmachine; { /* Set IP address */ MELDEVICEDATA MelIoctlData; long lIPAdrLen; char szIPAddress[] = "192.168.100.1"; DWORD dwStatus; /* Set device type */ melIoctlData.dwDeviceType = DEVICETYPE_TCP; /* Set IP address */ lIPAdrLen = strlen(szIPAddress); strncpy(MelIoctlData.uniDeviceInfo.Tcp.IPAddr, szIPAddress, lIPAdrLen); melIoctlData.uniDeviceInfo.Tcp.IPAddr[lIPAdrLen] = '\0'; /* Set port No. */ MelIoctlData.uniDeviceInfo.Tcp.lPortNo = 683; dwStatus = melIoctl(NULL, ADR_MACHINE(1), DEV_SET_COMMADDRESS, &MelIoctlData); }
Si alguien es tan amable de ayudarme, lo agradecere ampliamente, cervezas incluidas
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
#2
|
||||
|
||||
Cita:
¿No compila? ¿No funciona en ejecución? Aun así hay referencias en ese código que no están disponibles por lo que también es difícil probarlo (DEVICETYPE_TCP, por ejemplo).
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 29-03-2022 a las 17:52:49. |
#3
|
||||
|
||||
Buenas Netfali.
Que majo eres, siempre dispuesto a ayudar, Gracias. El problema es que no se si es convertido bien la funcion, sobre todo por el tema del puntero a la estructura &MelIoctlData. No da problema de compilacion, y la funcion me devuelve un error, con lo que en teoria, al menos, la libreria funciona y no "explota" La constante DEVICETYPE_TCP debe estar en otro fichero que por cierto no encuentro, no se si sera un tipo fijo en algun include .H de linux. De momento le he asignado un valor para salir del paso sabiendo que me falta esa constante. Tambien veo que ADR_MACHINE es como un array para C++ pero como no se como pasarle ese "puntero" tambien he hecho mal y como es un longorwd le he puesto a 1 hasta aprender a mandarle ese tipo de array. Las otras constantes si estan sacadas del manual del fabricante pero DEVICETYPE_TCP no esta en el manual y es un valor OBLIGADO Y NECESARIO por ellos. Algun dia lo encontrare o les llamare a los japaneses, jejeje. Como veras la funcion en C++ es: Código:
dwStatus = melIoctl(NULL, ADR_MACHINE(1), DEV_SET_COMMADDRESS, &MelIoctlData); ¿He convertido bien las estructuras? Código:
struct MELDEVICEDATA{ DWORD dwDeviceType; // Device type (Set DEVICETYPE_TCP.) APIDEVICE uniDeviceInfo; // Device information } struct APIDEVICE { struct Tcp { char IPAddr[16]; // IP address (e.g. “192.168.100.1”) long lPortNo; // Port No. (Set 683 (fixed value).) char dummy[12]; // Reserved } }
Espero ansiosamente tus comentos. ;?
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. Última edición por cesarsoftware fecha: 29-03-2022 a las 12:56:38. Razón: Amplio la informacion de constantes |
#4
|
||||
|
||||
No soy especialista en C++.
Lo mueve al foro correspondiente a ver si alguien con más conocimientos te puede ayudar. De todas formas un primer intento del que no te puedes fiar sería:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 29-03-2022 a las 18:15:02. |
#5
|
||||
|
||||
Gracias German
Espero la ayuda de los expertos. Siento no pasar tanto por el foro como antes, tengo mucho trabajo, pero intentare pasar por aqui mas a menudo para echar una mano.
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema al pasar función de D2007 a Berlín | newtron | Varios | 9 | 15-06-2019 09:33:28 |
Pasar Esta Funcion de Calculo de edad a dll | webmasterplc | OOP | 2 | 09-04-2014 12:23:22 |
Pasar Función de PL/pgSQL a SQL92 | Zeta | PostgreSQL | 1 | 16-12-2010 16:43:47 |
pasar un puntero a una funcion | baby | Varios | 2 | 21-05-2007 13:10:22 |
Pasar como parametro el where en una funcion | cso2000 | MS SQL Server | 2 | 15-02-2005 02:49:47 |
|