On Mon, 2007-04-16 at 09:02 +0200, Mattias Gaertner wrote:
> On Mon, 16 Apr 2007 08:49:53 +0200
> Mattias Gaertner <[EMAIL PROTECTED]> wrote:
> >
> > The trick itself is easy:
> > TMethod contains two pointers: code (the address) and data (the
> > TObject). Normally you assign both and everything works normally. But
> > if you set only one of them nil, then the test "AMethod<>nil"
> > still is true, but "Assigned(AMethod)" gives false.
> > If all components always use "if Assigned(AMethod) then AMethod(...)",
> > then this trick prevents calling the method at designtime, while still
> > holding a pointer. The pointer can be used by the IDE to know, which
> > method name to stream.
> > I don't remember which of the pointers are set to nil by Delphi.
> > A quick test revealed: FPC's Assigned does not support this.
>
> On a second test: FPC works great. The <>nil works just the same as
> Assigned, which is IMHO even better. We can store a pointer in "data"
> and keep "code" nil.
A sidenote to the fpc-developers. Is this 'by design' so that it won't
change in the future. And if it's by design, it's maybe a good idea to
add a test for this, since it would be a problem if this is changed, and
no-one understands why Lazarus keeps crashing. ;)
Joost.
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives