关于lazarus:不同对象Pascal方言中的事件分配语法

Event assignment syntax in different Object Pascal dialects

我正在开发一个应在Delphi和C Builder之间共享的组件,所以我使用Pascal作为通用语言。由于我家里的计算机上没有Delphi,因此我首先在Lazarus IDE中创建了该组件。现在,我将其"移植"到Delphi,发现了一个令人惊讶的语法问题:

这是使用FPC(而不是Delphi)进行编译的:

1
FSync.FSyncMethod := @SyncCheckInput;

这是用Delphi编译的(但不是FPC):

1
FSync.FSyncMethod := SyncCheckInput;

尽管存在这种语法差异,我如何在拉撒路和delphi之间共享一个单位?


在单位的开头插入此内容:

1
{$IFDEF FPC}{$MODE DELPHI}{$ENDIF}

这将指示FreePascal使用Delphi方言来编译单元。由于未定义FPC,Delphi将忽略{$MODE DELPHI}指令。

然后您可以使用此

1
FSync.FSyncMethod := SyncCheckInput;

用于动态设置事件。