Синтаксис назначения событий в разных диалектах 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;
для динамической настройки событий.