HAL9000
30-07-2006, 21:28:24
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() ):
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:
procedure SetBSCpath(path : shortstring); stdcall;
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.
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() ):
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:
procedure SetBSCpath(path : shortstring); stdcall;
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.