[fpc-pascal] support forusinganactivex

Ludo Brands ludo.brands at free.fr
Tue May 31 18:20:46 CEST 2011


You can send me the file directly. Address is in the message.

To install fpc from svn: http://wiki.lazarus.freepascal.org/Getting_Lazarus
has good instructions.

Ludo


> -----Message d'origine-----
> De : fpc-pascal-bounces at lists.freepascal.org 
> [mailto:fpc-pascal-bounces at lists.freepascal.org] De la part 
> de Roberto Padovani
> Envoyé : mardi 31 mai 2011 17:41
> À : FPC-Pascal users discussions
> Objet : Re: RE : RE : RE : RE : RE : RE : RE : RE : 
> [fpc-pascal] support forusinganactivex
> 
> 
> I triede with fpc 2.4.4 but nothing changes. Would you mind 
> having a look a the full dll with your more recent fpc? By 
> the way, how do I install fpc 2.5.x ?? I might send it to you 
> privately; the only trouble is that you don't have a real 
> hardware to connect it, even if the transducers class are 
> created during the main device creation and their count and status are
> (should) always be available even if not connected.
> 
> A test case would simply:
> 1) createoleobject  //OK
> 2) object.transducers.count // OK, always 8
> 3) object.transducers(1).Status   //   ???? should be an integer, not
> a crash !!!
> 
> R#
> 
> 
> 2011/5/31 Roberto Padovani <padovani.r at gmail.com>:
> > 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
> >>
> >
> _______________________________________________
> 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