不同Object Pascal方言中的事件赋值语法

Wol*_*olf 11 delphi syntax-error lazarus

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

这与FPC编译(但不是Delphi):

FSync.FSyncMethod := @SyncCheckInput;
Run Code Online (Sandbox Code Playgroud)

这与Delphi(但不是FPC)编译:

FSync.FSyncMethod := SyncCheckInput;
Run Code Online (Sandbox Code Playgroud)

尽管有这种语法上的分歧,我如何在Lazarus和Delphi之间共享一个单位?

Wos*_*osi 15

在单位的开头插入:

{$IFDEF FPC}{$MODE DELPHI}{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

这将指示FreePascal使用Delphi方言编译单元.Delphi将忽略该{$MODE DELPHI}指令,因为FPC未定义.

然后你可以使用它

FSync.FSyncMethod := SyncCheckInput;
Run Code Online (Sandbox Code Playgroud)

用于动态设置事件.