[fpc-pascal] support for usinganactivex

Roberto Padovani padovani.r at gmail.com
Tue May 31 08:34:41 CEST 2011


Thanks, I'll try installing a more recent fpc and lazarus...



2011/5/30 Ludo Brands <ludo.brands at free.fr>:
> I created a small automation object with following IDL (part of it):
>
>   interface ItestAX: IDispatch
>  {
>    [
>    propget,
>    id(0x00000001)
>    ]
>    HRESULT _stdcall Devices([out, retval] IDevices ** Value );
>  };
>
>   interface IIDevices: IDispatch
>  {
>    [
>    propget,
>    id(0x00000000)
>    ]
>    HRESULT _stdcall Device([in] long Idx, [out, retval] IDevice ** Value );
>    [
>    propget,
>    id(0x00000002)
>    ]
>    HRESULT _stdcall Count([out, retval] long * Value );
>  };
>
>   interface IIDevice: IDispatch
>  {
>    [
>    propget,
>    id(0x00000001)
>    ]
>    HRESULT _stdcall Name([out, retval] BSTR * Value );
>  };
>
> This matches pretty much the interface you described earlier. Note the
> id(0x00000000) which makes Device the default member of IIDevices. This is
> the same as id(DISPID_VALUE) in your case.
>
> Now, the following lines do work for me to get the Name member of IIDevice
> (ActX,a,b:variant;s:string):
>
>  ActX:=CreateOleObject(MyTestControl);
>  a:=ActX.Devices;
>  b:=a.Device[3];
>  s:=b.Name;
>  b:=ActX.Devices.Device[3];
>  s:=b.Name;
>  b:=ActX.Devices[3];
>  s:=b.Name;
>
> Note that the default member does work correctly:
> Devices.Device[3]===Devices[3].
>
> I'm using fpc 2.5.1 svn 17599.
>
> Ludo
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>



More information about the fpc-pascal mailing list