Show quoted text 27 lines
Mattias Gaertner wrote:
> On Wed, 22 Feb 2012 20:55:01 +0000
> Mark Morgan Lloyd wrote:
>
>> I've just spotted this in my code:
>>
>> procedure FormCloseQuery(Sender: TObject; CanClose: boolean);
>> ..
>> procedure TListForm.FormCloseQuery(Sender: TObject; CanClose: Boolean);
>>
>> Those were inserted by some old version of the IDE, presumably the
>> current version inserts the missing var.
>
> I don't remember such a bug, but I'm not sure. Maybe it was there for a
> very short time and you were just unlucky.
Only thing there is that I roughed that program out a long time before I
was getting Lazarus from svn, so it might in fact be in one or more
releases. Appears to be , so it's fairly unlikely that
anybody's still using an affected copy.
>> Shouldn't either the IDE or the runtimes pick up this error?
>
> It's valid code. What do you expect?
I'd expect the trunk IDE or runtimes to realise that the second
parameter isn't compatible with the current definitions.
Ah, now I see what you mean:
TCloseQueryEvent = procedure(Sender : TObject; var CanClose : boolean) of object;
And you have
procedure TListForm.FormCloseQuery(Sender: TObject; CanClose: Boolean);
Yes, the IDE adds the var when the event is created. I don't know when this was implemented - a long time ago.
There is currently no tool to fix the signatures.
The LFM / TReader does not check either.
You can create feature requests if you like.
Mattias