<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comentarios en: Velneo, dll&#8217;s y cadenas</title>
	<atom:link href="http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/feed/" rel="self" type="application/rss+xml" />
	<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/</link>
	<description>Velneo: desde el novato al experto</description>
	<lastBuildDate>Sat, 14 Nov 2009 20:34:04 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: admin</title>
		<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/#comment-23</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Sat, 14 Nov 2009 20:34:04 +0000</pubDate>
		<guid isPermaLink="false">http://exprimiendovelneo.wordpress.com/?p=49#comment-23</guid>
		<description>Gracias por el artículo. Recientemente hice una DLL para Windev 14 y, a diferencia de velneo que puede recibir el contenido total de un string directamente, Windev solamente puede recibir retornos Int, por lo que obliga a enviar la dirección de una variable a una función y en la DLL reasignar el contenido con apuntadores, pero para que funcione debe preservarse el contenido del string, pues en windev la siguiente línea de código es la obtención del valor por apuntador a una variable local, y ya para finalizar, liberar el contenido de esa variable como bien comentas. 

En poco tiempo implementé ésta última función que necesitaba.

Saludos cordiales</description>
		<content:encoded><![CDATA[<p>Gracias por el artículo. Recientemente hice una DLL para Windev 14 y, a diferencia de velneo que puede recibir el contenido total de un string directamente, Windev solamente puede recibir retornos Int, por lo que obliga a enviar la dirección de una variable a una función y en la DLL reasignar el contenido con apuntadores, pero para que funcione debe preservarse el contenido del string, pues en windev la siguiente línea de código es la obtención del valor por apuntador a una variable local, y ya para finalizar, liberar el contenido de esa variable como bien comentas. </p>
<p>En poco tiempo implementé ésta última función que necesitaba.</p>
<p>Saludos cordiales</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Roberto Blasco</title>
		<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/#comment-19</link>
		<dc:creator>Roberto Blasco</dc:creator>
		<pubDate>Wed, 25 Jun 2008 21:22:11 +0000</pubDate>
		<guid isPermaLink="false">http://exprimiendovelneo.wordpress.com/?p=49#comment-19</guid>
		<description>Hola gVera.

Ya quisiera yo que mi conocimiento de C/C++ fuera lo suficientemente sólido como para hacer cualquier aseveración a prueba de bombas....

Por lo que yo sé, el tipo de clase String declarado dentro de una función se libera al terminar ésta.

Un saludo. Roberto.</description>
		<content:encoded><![CDATA[<p>Hola gVera.</p>
<p>Ya quisiera yo que mi conocimiento de C/C++ fuera lo suficientemente sólido como para hacer cualquier aseveración a prueba de bombas&#8230;.</p>
<p>Por lo que yo sé, el tipo de clase String declarado dentro de una función se libera al terminar ésta.</p>
<p>Un saludo. Roberto.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: gVera</title>
		<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/#comment-18</link>
		<dc:creator>gVera</dc:creator>
		<pubDate>Fri, 20 Jun 2008 10:56:15 +0000</pubDate>
		<guid isPermaLink="false">http://exprimiendovelneo.wordpress.com/?p=49#comment-18</guid>
		<description>Efectivamente parece un sistema mucho más sencillo. Lo que no tengo tan claro es que la memoria alojada para strTemp sea liberada. Me lo puedes confirmar?</description>
		<content:encoded><![CDATA[<p>Efectivamente parece un sistema mucho más sencillo. Lo que no tengo tan claro es que la memoria alojada para strTemp sea liberada. Me lo puedes confirmar?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Velneo DLLs y Cadenas &#124; Blog de Velneo</title>
		<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/#comment-17</link>
		<dc:creator>Velneo DLLs y Cadenas &#124; Blog de Velneo</dc:creator>
		<pubDate>Fri, 20 Jun 2008 09:24:55 +0000</pubDate>
		<guid isPermaLink="false">http://exprimiendovelneo.wordpress.com/?p=49#comment-17</guid>
		<description>[...] Leer más [...]</description>
		<content:encoded><![CDATA[<p>[...] Leer más [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Roberto Blasco</title>
		<link>http://exprimiendovelneo.wordpress.com/2008/04/21/velneo-dlls-y-cadenas/#comment-16</link>
		<dc:creator>Roberto Blasco</dc:creator>
		<pubDate>Sat, 03 May 2008 09:36:39 +0000</pubDate>
		<guid isPermaLink="false">http://exprimiendovelneo.wordpress.com/?p=49#comment-16</guid>
		<description>Si utilizas C++ puedes usar la Clase String para estas lides.

char* __stdcall Fichero2Cadena(const char* rutaFichero){

    int iFileHandle;
    int iFileLength;
    char *buffer;
    AnsiString strTemp;

    try{
      iFileHandle = FileOpen(rutaFichero, fmOpenRead);
      iFileLength = FileSeek(iFileHandle,0,2);
      FileSeek(iFileHandle,0,0);

      buffer = (char*)malloc((iFileLength+1)*sizeof(char));

      FileRead(iFileHandle, buffer, iFileLength);
      FileClose(iFileHandle);

      // *************************************************************
      // Asignamos a un AnsiString el buffer para así poder liberarlo.
      // *************************************************************
      strTemp = buffer;
      free(buffer);
      return (char*)strTemp.c_str();
    }
    catch(Exception &amp;e){
      free(buffer);
      return (char*)e.Message.c_str();
    }
}</description>
		<content:encoded><![CDATA[<p>Si utilizas C++ puedes usar la Clase String para estas lides.</p>
<p>char* __stdcall Fichero2Cadena(const char* rutaFichero){</p>
<p>    int iFileHandle;<br />
    int iFileLength;<br />
    char *buffer;<br />
    AnsiString strTemp;</p>
<p>    try{<br />
      iFileHandle = FileOpen(rutaFichero, fmOpenRead);<br />
      iFileLength = FileSeek(iFileHandle,0,2);<br />
      FileSeek(iFileHandle,0,0);</p>
<p>      buffer = (char*)malloc((iFileLength+1)*sizeof(char));</p>
<p>      FileRead(iFileHandle, buffer, iFileLength);<br />
      FileClose(iFileHandle);</p>
<p>      // *************************************************************<br />
      // Asignamos a un AnsiString el buffer para así poder liberarlo.<br />
      // *************************************************************<br />
      strTemp = buffer;<br />
      free(buffer);<br />
      return (char*)strTemp.c_str();<br />
    }<br />
    catch(Exception &amp;e){<br />
      free(buffer);<br />
      return (char*)e.Message.c_str();<br />
    }<br />
}</p>
]]></content:encoded>
	</item>
</channel>
</rss>
