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?
Mailing lists / lazarus-es / 2012-09
Como retornar un html (texto largo) desde una funcion en una dll
3 messages · 3 people · –
- JJosé Mejuto 1
- MMartin Gomez 1
- MMaxi 1
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
El 27/09/2012 19:48, Maxi escribi�:
Show quoted text 7 lines
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.
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>
