Синтаксис назначения событий в разных диалектах Object Pascal

Я работаю над компонентом, который должен делиться между Delphi и С++ Builder, поэтому я использую Pascal как lingua franca. Поскольку у меня нет дома Delphi на моем компьютере дома, я сначала создал компонент в Lazarus IDE. Теперь я "портировал" его в Delphi и нашел удивительную проблему синтаксиса:

Это компиляция с FPC (но не Delphi):

FSync.FSyncMethod := @SyncCheckInput;

Скомпилируется с Delphi (но не с FPC):

FSync.FSyncMethod := SyncCheckInput;

Как я могу разделить единицу между Lazarus и Delphi, несмотря на эту синтаксическую дивергенцию?

Ответ 1

Вставьте это в начале ваших блоков:

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

Это даст указание FreePascal использовать диалект Delphi для компиляции устройства. Delphi будет игнорировать директиву {$MODE DELPHI}, поскольку FPC не определен.

Затем вы можете использовать этот

FSync.FSyncMethod := SyncCheckInput;

для динамической настройки событий.