<div dir="ltr">Muchímas gracias por la explicacion.<div><br></div><div>Saludos,</div><div><br></div><div>Pancho</div><div>Córdoba</div><div>Argentina</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 21 de junio de 2014, 8:58, José Mejuto <span dir="ltr"><<a href="mailto:joshyfun@gmail.com" target="_blank">joshyfun@gmail.com</a>></span> escribió:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">El 20/06/2014 21:28, francisco prieto escribió:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ya me explicarán bien porque hay que utilizar constref y noconst como<br>
estaba en el paquete.<br>
<br>
</blockquote>
<br>
Hola,<br>
<br>
Me alegro que lo solucionaras. La diferencia entre ambos modos es por culpa de las "Calling Convention" o cómo se pasan parámetros a funciones en las distintas plataformas (Windows, Mac, Unix, ....). En Windows un TGUID (bloque de memoria de 16 bytes) con el modificador "const" se pasa como un puntero a ese bloque de memoria, mientras que en Unix se hace una copia de esos 16 bytes y luego se pasa un puntero a la copia.<br>


<br>
Por este motivo fpc tuvo que "inventarse" un nuevo modificador, el "constref" que en todas las plataformas se pasa como un puntero al bloque de memoria sin realizar nunca una copia.<br>
<br>
Lo que teníamos que poner antes era algo como:<br>
<br>
function QueryInterface({$IFDEF WINDOWS} const {$ELSE} var {$ENDIF} IID: TGUID; out Obj): HResult; stdcall;<br>
<br>
Para poder trabajar con paquetes estilo ActiveX en Linux (no son ActiveX pero si el estilo).<br>
<br>
Muchas veces la diferencia entre const y constref es nula y ambos se comportan del mismo modo, pero otras veces no, y ahí está la diferencia.<div class="HOEnZb"><div class="h5"><br>
<br>
-- <br>
<br>
<br>
______________________________<u></u>_________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.<u></u>freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.<u></u>freepascal.org/mailman/<u></u>listinfo/lazarus-es</a><br>
</div></div></blockquote></div><br></div>