[Lazarus] Buffer dealocating between program and C++ library
Kostas Michalopoulos
badsectoracula at gmail.com
Thu May 12 04:38:53 CEST 2011
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 ...
Kostas "Bad Sector" Michalopoulos
More information about the Lazarus
mailing list