[Lazarus-es] Implementar PascalMock

francisco prieto fajprieto en gmail.com
Sab Jun 21 14:07:42 CEST 2014


Muchímas gracias por la explicacion.

Saludos,

Pancho
Córdoba
Argentina


El 21 de junio de 2014, 8:58, José Mejuto <joshyfun en gmail.com> escribió:

> El 20/06/2014 21:28, francisco prieto escribió:
>
>  Ya me explicarán bien porque hay que utilizar constref y noconst como
>> estaba en el paquete.
>>
>>
> Hola,
>
> 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.
>
> 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.
>
> Lo que teníamos que poner antes era algo como:
>
> function QueryInterface({$IFDEF WINDOWS} const {$ELSE} var {$ENDIF} IID:
> TGUID; out Obj): HResult; stdcall;
>
> Para poder trabajar con paquetes estilo ActiveX en Linux (no son ActiveX
> pero si el estilo).
>
> 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.
>
>
> --
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20140621/5d6bf69f/attachment-0002.html>


More information about the Lazarus-es mailing list