FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ayuda con shortstring de Delphi en C++
Hola a todos:
Soy nuevo en el foro y he ingresado exclusivamente para preguntar una duda. Vereis, no soy programador de Delphi ni de Pascal (Aunque si de Modula2...) y necesito usar una "dll" escrita en Delphi en un programa en C++. El caso es que en la "dll" se hace uso del tipo shortstring y no consigo ni bien ni mal hacer que que mis cadenas de C++ funcionen como shortstring. Se que el Borland C++ Builder da soporte directo para este tipo de cadenas, pero yo estoy empleando MS Visual studio 2005. ¿Alguien puede ayudarme a definir un tipo shortstring en C++? Hasta ahora se que el shortstring es una cadena de 256 caracteres y que en el primero se almacena la longitud de la cadena. Lo que no sé es si termina en cero (imagino que no) y como están rellenos el resto de caracteres de la cadena (imagino que son nulos). El caso es que he probado ambas combinaciones y no consigo hacer que funcione. Si alguien programa en C++ adjunto el código de mi programa (casca la función setBSCpath() ): Código:
char ruta[256]; ruta[0]=3; ruta[1]='C'; ruta[2]=':'; ruta[3]='\\'; micatalogo.SetBSCpath(ruta); y también adjunto la especificacion e implementación de la función de la "dll" en Delphi: Código:
procedure SetBSCpath(path : shortstring); stdcall; Código:
procedure SetBSCpath(path : shortstring); var i : integer; begin if path<>Bscpath then for i:=1 to CacheNum do cachelst[i]:=0; BSCpath:=path; end; Un saludo a todos y muchas gracias a los respondones. |
#2
|
||||
|
||||
A lo mejor te puedo ayudar con un ejemplo:
Si tenemos en una librería hecha en Delphi esta función:
Podemos hacer un pequeño programa en C que la utilice de la siguiente manera: Código:
#include <stdio.h> #include <windows.h> typedef int (*MYPROC)(char *str); int main(int argc, char *argv[]) { HINSTANCE hinstLib; MYPROC ProcAdd; char s[256]; strcpy(&s[1], "Hola mundo"); s[0] = strlen(&s[1]); hinstLib = LoadLibrary("libreria.dll"); if (hinstLib != NULL) { ProcAdd = (MYPROC) GetProcAddress(hinstLib, "Mensaje"); if (ProcAdd != NULL) (ProcAdd) (s); else printf("No puedo cargar la libreria\n"); FreeLibrary(hinstLib); } return 0; } |
#3
|
|||
|
|||
¡¡SOLUCIONADO!!
Gracias Seoane. Indirectamente me has ayudado muchísismo. Tras ver tu post decidí verificar si la implementación de las llamadas a la "dll" estaba hecho correctamente (era un archivo distribuido junto a la dll y al fichero de encabezamientos) y voila... no existía implementación de la función setBSCPath()... aunque si estaba el prototipo en el header. Ya me funciona correctamente, muchas gracias de nuevo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda con delphi | darkbits | Varios | 2 | 12-07-2006 15:33:39 |
Instalar Ayuda (.HLP) en la Ayuda de Delphi? | MasterXP | Varios | 6 | 12-04-2006 06:57:49 |
Ayuda con delphi 7 | tato | Varios | 3 | 19-12-2005 20:46:35 |
Una Ayuda en Delphi | Javier rafael | Lazarus, FreePascal, Kylix, etc. | 9 | 03-11-2005 10:45:37 |
No puedo abrir la ayuda de delphi 8/delphi 2005 | ASAPLTDA | Varios | 0 | 24-12-2004 16:20:53 |
|