Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-09

Como retornar un html (texto largo) desde una funcion en una dll

3 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Maxi

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?

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

José Mejuto
to Maxi

El 27/09/2012 19:48, Maxi escribi�:

Show quoted text 7 lines
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.

Reply by email

Martin Gomez
to José Mejuto

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>

Show quoted text 28 lines
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.freepascal.org/pipermail/lazarus-es/attachments/20120929/9155d113/attachment.html>

Reply by email