Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Uso de DLL (https://www.clubdelphi.com/foros/showthread.php?t=15061)

joumont 08-10-2004 15:52:41

Uso de DLL
 
Tengo un "pequeño problema" usando DLL escritas en Delphi. Uso Delphi 6. El caso es que al internar usar funciones de la DLL, siempre que el valor que devuelve la funciópn es un String, no funciona, me da un error "Invalid Pointer Operation". He probado casi todo. He leido algo acerca de una libreria "FastShareMemory" que hay que usar pero no tengo ni idea. Necesitaria ayuda urgente, no se que hacer para sacar partido a las DLL.

delphi.com.ar 08-10-2004 18:31:11

Los tipos string no son vàlidos dentro de las convenciones de llamadas de las DLLs... Te recomiendo utilizar tipos PChar que son punteros a caracter terminados en nulo, para porder pasar cadenas de caracteres.

Saludos!

joumont 08-10-2004 20:39:02

Necesitaria un ejemplo simple de una dll con una funcion que recibe un string y devuelva un pchar.

Muchas gracias por adelantado.

vic_ia 09-10-2004 03:16:47

hola...

segun entiendo, no es "recomendable" el uso de Strings, ni en el paso de parametros ni en el valor de retorno de una función que se encuentre en una DLL, como te lo han comentado, lo que debes hacer es utilizar, tanto en los parametros de llamada de la función como en el valor de retorno el tipo PChar

aunque borland te permite el uso de Strings en parametros y en valores de retorno estos solo son efectivos (me parece) cuando las llamas desde programas realizados en Delphi y ademas debes "distribuir" adicionalmente una de las librerias de borland (de momento no recuerdo el nombre) que es la que lleva a cabo todo el "trabajo" relacionado con Strings...

saludos....

joumont 10-10-2004 22:12:18

Creo que la libreria a la que haces referencia es la "shareMem", pero tampoco se como usarla.

vic_ia 11-10-2004 18:10:39

hola joumont...

cuando habres un nuevo proyecto de DLL en forma de comentario te aparecen las indicaciones que debes de seguir si deseas utilizar Strings en tus DLL (y en los proyectos que la utilicen)....

saludos...

joumont 15-10-2004 10:46:47

La solución la encontre pasando PChar a traves de un StringList, asignandole la memoria necesaria, antes de retornar el valor, me funciona bien. Unicamente que al retornar la cadena el final de la misma es algo así como $D$A, pero se puede quitar con el comando de cadenas delete


La franja horaria es GMT +2. Ahora son las 23:04:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi