[Lazarus-es] Como retornar un html (texto largo) desde una funcion en una dll

Martin Gomez mmgomez en gmail.com
Sab Sep 29 17:25:54 CEST 2012


Hola,

Yo tuve que hacer algo similar entre una DLL en C y Delphi 7.
La solución (en mi caso) fue definir en la DLL el parametro como "char *" y
en Delphi utilizar un PChar previamente dimensionado al tamaño máximo, como
hacen en C.
Mira aqui:
http://delphi.wikia.com/wiki/Creating_DLLs
http://www.tek-tips.com/faqs.cfm?fid=7472
Aparentemente el éxito de la conversión depende de que reserves el espacio
para el resultado antes de hacer la llamada.


Como segunda opcion, si la DLL también está en Delphi, la unit ShareMem (no
se si está disponible en Lazarus, soy nuevo en esto) te permite pasar
strings sin preocuparte. Lo mismo hace FastMM.
La contra de este segundo método es que la DLL no es compatible con otros
lenguajes, perdiendo la "gracia" de poner la rutina en una DLL.

Suerte con eso.

2012/9/29 José Mejuto <joshyfun en gmail.com>

> El 27/09/2012 19:48, Maxi escribió:
>
>  Necesite devolver desde una dll que es un robot que lee , con un a
>> componente indy una pagina para extraer datos.
>> Hasta ahora anda bien pero debo guardar la pagina consultada, el texto
>> html en una tabla. Pero se que el paso de string largos trae
>> problemas.
>> Como es mejor pasar de vuelta este dato?
>>
>>
> Hola,
>
> No puedes devolver "strings" de pascal, pero noda te impide devolver un
> bloque de memoria con el texto y otra variable que indique el tamaño del
> mismo.
>
> Básicamente tienes que enviarte entre la dll y el programa principal
> bloques de memoria y recordar que quien (la dll o la aplicación) haya
> pedido el bloque tiene que liberarlo, no puedes mezclar peticiones y
> liberaciones. Si necesitaras mezclarlas, se puede hacer, pero se complica
> la cosa un poco.
>
>
> ______________________________**_________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.**freepascal.org<Lazarus-es en lists.lazarus.freepascal.org>
> http://lists.lazarus.**freepascal.org/mailman/**listinfo/lazarus-es<http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es>
>



-- 
Try not to become a man of success but rather to become a man of value. *Albert
Einstein*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20120929/9155d113/attachment-0002.html>


More information about the Lazarus-es mailing list