On Thu, 23 Feb 2012 07:07:47 +0000 Mark Morgan Lloyd <[email protected]> wrote:
> Mattias Gaertner wrote: > > On Wed, 22 Feb 2012 20:55:01 +0000 > > Mark Morgan Lloyd <[email protected]> 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 OK at 0.9.24.1, 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 -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
