Zitat von Vincent Snijders <vsnijd...@vodafonevast.nl>:
Jonas Maebe schreef:
On 10 Sep 2009, at 14:01, Mattias Gärtner wrote:
Mattias Gärtner wrote:
Can someone explain why in mode objfpc comparing methods only compares
the address, but not the instance?
Seems perfectly logical to me (@ = Address of, in this case "code
address", the code is the same for all instances of a class).
OnClick:=...@myclick;
The @ operator is more than "address of".
The current behaviour has been there since svn revision 1, so it's
quite old and established at least (and Delphi/TP-compatible, afaik).
It is delphi compatible, not really intuitive, so I would welcome a
change in the objfpc mode.
See:
http://bugs.freepascal.org/view.php?id=9228
http://bugs.freepascal.org/view.php?id=11868
To draw the whole picture:
var a,b: TNotifyEvent;
a=b compares only Code, not Data
a=nil compares only Data, not Code
Assigned(a) compares only Code, not Data
n.a. compares both
I wonder how many programmers know this.
Even the FCL contains code, where this leads to wrong code.
More important: I don't know a place, where a=b and a=nil are used
right. But I have seen a lot of code where it was used wrong.
Mattias
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel