[fpc-devel] Differences between fpc and Delphi regarding COM interfaces declarations
Luiz Americo Pereira Camara
pascalive at bol.com.br
Sat Feb 3 16:10:26 CET 2007
While porting some Delphi code i found some differences in the
declarations of COM interfaces.
1) In IEnumFORMATETC.Next(Celt:ULong;Out Rgelt:FormatEtc;Out
pceltFetched:ULong):HResult; Delphi expects pceltFetched to be a PInteger
win32 documentation:
*HRESULT Next( ULONG*/ celt/*,* * FORMATETC_com_FORMATETC **/
rgelt/*,* * ULONG **/ pceltFetched/ *);*
Delphi code:
function Next(celt: Integer; out elt; pceltFetched: PLongint): HResult;
My adapted code (Based in activex unit - required to compile):
function Next(celt: LongWord; out elt: FormatEtc; out pceltFetched:
LongWord): HResult;
There are two questions:
- Should fpc adapt the code to be delphi compatible??
- Calling this interface from fpc is not allowed to pass a nil
parameter in pceltFetched, but it would be possible calling from
outside?? C++? (The win32 docs does not specify)
I'm asking this because the original code checks if pceltFetched is
assigned
2) In the STGMEDIUM definition fpc has the following fields
PUnkForRelease, PSTM, PSTG while delphi has UnkForRelease, STM, STG.
First i think that fpc translated the win headers wrongly, but after
looking for the original code declaration i found that fpc is following
win32 api closely (with the "P")
- What todo here: stay with win32 api or goto Delphi?
Notice that this is only a matter of nomenclature and renaming them was
sufficient to fix the code, but i took sometime anyway.
PS: I'm documenting all the differences i found and i pretend to create
a database with the differences between Delphi and fpc/Lazarus. I'll
publish it ASA_F_ . ;-)
Luiz
More information about the fpc-devel
mailing list