[fpc-devel] FPC dynamic libraries
Daniël Mantione
daniel.mantione at freepascal.org
Thu Feb 8 14:35:30 CET 2007
Op Thu, 8 Feb 2007, schreef Michael Van Canneyt:
> > > Secondly, there are serious problems with this approach which make it=
unusable
> > > for an IDE like Lazarus.
> > > =
> > > Assume I get a component instance from the plugin (MyObject), then ex=
tremely =
> > > simple and basic statements like
> > > =
> > > If (MyObject is TComponent) then
> > > XYZ
> > > =
> > > will fail, even though MyObject is a TComponent, because the VMT of t=
he =
> > > MyObject TComponent parent resides in the library, and the VMT of TCo=
mponent
> > > used in the If statement is inside Lazarus, causing the statement to =
fail, =
> > > even though it should be true. When using packages, the statement wil=
l function
> > > correctly.
> > =
> > I was talking a binary API, and that automatically disallows sending =
> > classes through the API, because you want to prevent that an internal =
> > change breaks your external API. Simply design the API in a proper way.
> =
> You can't, for Lazarus. You need the classes, that's what you need the
> plugins for in the first place: to install additional components on the =
> component palette. They must descend from the TComponent which is in
> the IDE.
> =
> There is no way around it.
Yes, there is, we should not forget we have a facility in the language =
to solve this problem: interfaces. Both components in the IDE as in the =
plugin can implement the same interface, event though they have different =
VMT layouts.
So, a component that you place in the component palette implements some =
kind of "palette" interface, providing the IDE with the communications it =
needs to work with the component.
Dani=EBl
More information about the fpc-devel
mailing list