我将我的项目从Delphi转移到Lazarus.在一个表单中,我有一个私有方法,参数var Active:Boolean.在Delphi中没关系,但Lazarus给出错误错误:重复标识符“活动”和提示:标识符已在第641行的单元
property Active: Boolean read FActive;
更改参数名称(使用重构)并不困难,但为什么我不能对方法的属性和参数使用相同的名称?
为了确保它不是Delphi自动转换的错误,我在Lazarus中创建了新项目并添加了私有方法
procedure Test(var Active: Boolean);
结果是一样的.即使我使用const或什么都不使用var.
我查看了FPC文档,但未发现任何此类限制.我只是好奇.
procedure TForm1.Test(var Active: Boolean); var ParamActive: Boolean; FormActive: Boolean; begin ParamActive := Active; // gets the var parameter FormActive := Self.Active; // gets the property ... end;
我不知道为什么FPC将它标记为错误.它不应该.
更新
FWIW,如果你改变了
{$mode objfpc}
至
{$mode delphi}
它按预期编译,你不会收到错误.我刚试过这个.