On 2011-05-12 05:38:53 +0300, Kostas Michalopoulos wrote: > I think that using a "@" before the function pointer variable returns the > variable's address not the function's and that the "@" is needed only for > functions, ie. > > function Foo: TBar; > > ... > > FooRef:=@Foo; > > will assign to FooRef the address of Foo, but > > OtherFooRef:=@FooRef; > > will try to assign to OtherFooRef the address of the FooRef variable (not > the address stored in the FooRef variable - that is, the address of Foo) but > fail at compilation time since OtherFooRef is supposed to be of type of > whatever Foo is, not a pointer to that type. > > However if you just check for nil this won't be noticed since by typing > > if @FooRef <> nil ... > > is like saying "if FooRef's address is not nil" instead of "if the address > stored in FooRef is not nil". So basically you need to get rid of those > "@"s. > > Also personally i prefer to use the Assigned built-in function like > > if Assigned(FooRef) ... > > instead of > > if FooRef <> nil ... >
Thanks. Fixed. -- Leonardo M. Ramé http://leonardorame.blogspot.com -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
