[Lazarus-es] Implementar PascalMock
francisco prieto
fajprieto en gmail.com
Vie Jun 20 21:28:05 CEST 2014
"Tanto va el cántaro a la fuente hasta que se rompe",dicen...
Pues bien
Busque expresamente el error "Calling convention doesn't match forward" y
lo encontré acá...
http://www.freepascal.org/docs-html/user/userse62.html
Entendí que lo que estaba faltando era *stdcall;*
Le agregue eso en la implementación y compiló... Ahora da otros errores
pero ya tienen que ver con el TDD que estoy realizando, así que sigo
adelante...
Ya me explicarán bien porque hay que utilizar constref y no const como
estaba en el paquete.
Agradezco la buena predisposición de sus respuestas.
Saludos y sigo adelante,
Pancho
Córdoba
Argentina
2014-06-20 16:04 GMT-03:00 francisco prieto <fajprieto en gmail.com>:
> No se si estoy mejor o peor Jose porque ahora le puse:
>
> type
>
> // TNoRefCountObject
> //
> {: Base object to implement interfaces without reference counting }
> TNoRefCountObject = class(TObject, IInterface)
> protected
> function QueryInterface(const*ref* IID: TGUID; out Obj): HResult;
> stdcall;
> function _AddRef: Integer; stdcall;
> function _Release: Integer; stdcall;
> end;
>
> implementation
>
> { TNoRefCountObject }
>
> function TNoRefCountObject.QueryInterface(const*ref* IID: TGUID; out
> Obj): HResult;
> begin
> if GetInterface(IID, Obj) then
> Result := 0
> else
> Result := E_NOINTERFACE;
> end;
>
> y me da esta sarta de errores:
>
> NoRefCountObject.pas(29,28) Error: Calling convention doesn't match forward
> NoRefCountObject.pas(20,14) Hint: Found declaration:
> TNoRefCountObject.QueryInterface(constref TGuid,out <Formal type>):LongInt;
> StdCall;
> NoRefCountObject.pas(37,28) Error: Calling convention doesn't match forward
> NoRefCountObject.pas(21,14) Hint: Found declaration:
> TNoRefCountObject._AddRef:LongInt; StdCall;
> NoRefCountObject.pas(42,28) Error: Calling convention doesn't match forward
> NoRefCountObject.pas(22,14) Hint: Found declaration:
> TNoRefCountObject._Release:LongInt; StdCall;
> NoRefCountObject.pas(48) Fatal: There were 3 errors compiling module,
> stopping
>
> Gracias por la mano,
>
> Pancho
> Córdoba
> Argentina
>
>
> 2014-06-20 15:55 GMT-03:00 José Mejuto <joshyfun en gmail.com>:
>
> El 20/06/2014 20:33, francisco prieto escribió:
>>
>>
>> TNoRefCountObject = class(TObject, IInterface)
>>> protected
>>> function QueryInterface(const IID: TGUID; out Obj): HResult;
>>> stdcall;
>>>
>> function QueryInterface(constREF IID: TGUID; out Obj): HResult;
>> stdcall;
>>
>> function _AddRef: Integer; stdcall;
>>> function _Release: Integer; stdcall;
>>> end;
>>>
>>>
>> Esa es una diferencia con Delphi, al ser Delphi "Windows Only".
>>
>> --
>>
>>
>> _______________________________________________
>> 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/20140620/e2b9f540/attachment-0002.html>
More information about the Lazarus-es
mailing list