[Lazarus] TControl.Click?

Martin lazarus at mfriebe.de
Sat Oct 1 10:06:05 CEST 2011


On 01/10/2011 08:13, Mattias Gaertner wrote:
> On Sat, 1 Oct 2011 10:08:59 +0300
> Zaher Dirkey<parmaja at gmail.com>  wrote:
>
>> Off your topic
>> On Sat, Oct 1, 2011 at 9:53 AM, Mattias Gaertner
>> <nc-gaertnma at netcologne.de>wrote:
>>
>>> "Assigned" is used instead of "FOnClick<>nil"
>>
>> What is different between check the Method fields ?
>> "Assigned(FOnClick)" and "FOnClick<>nil"
> http://wiki.lazarus.freepascal.org/IDE_tricks#Events_.28Method_properties.29_in_the_Object_Inspector
>
>
Strange, on the page it says:
> if  OnMyEvent<>  nil  then  OnMyEvent(...);// wrong, because it checks Data too

> if  OnMyEvent = NewValuethen  exit;// wrong, because it compares only Code

So I compiled (to assembler)  32 bit:

Comparison with nil (expect to check code + data, as told above)
Comparison with other method (expect code only)

But in both cases it tests one long entry (testl or cmpll). so the same 
amount of data. It doesn't look that <> nil checks code+data?

# [33] if OnDeactivate <> nil then;
     movl    -8(%ebp),%eax
     movl    980(%eax),%eax
     testl    %eax,%eax
.Lj6:
.Ll3:
# [34] if OnClose = nil then;
     movl    -8(%ebp),%eax
     movl    956(%eax),%eax
     testl    %eax,%eax
.Lj8:
.Ll4:
# [35] if OnDeactivate = OnCreate then;
     movl    -8(%ebp),%eax
     movl    -8(%ebp),%edx
     movl    980(%eax),%eax
     cmpl    972(%edx),%eax





More information about the Lazarus mailing list