Я работаю над компонентом, который должен использоваться совместно с Delphi и C++ Builder, поэтому я использую Pascal как lingua franca. Поскольку у меня нет дома Delphi на моем компьютере дома, я сначала создал компонент в Lazarus IDE. Теперь я "портирована" его на Delphi и обнаружил удивительную проблему синтаксиса:Синтаксис назначения заданий в разных диалектах Object Pascal
Это компилирует с FPC (но не Delphi):
FSync.FSyncMethod := @SyncCheckInput;
Это компилирует с Delphi (но не FPC):
FSync.FSyncMethod := SyncCheckInput;
Как я могу делиться единицей между Лазарем и Дельфами, несмотря на эту синтаксическую дивергенцию?
«* Отсутствие общего (и портативного) механизма синхронизации *» - FreePascal имитирует многие из основных классов Delphi, включая «TThread» и его метод «Synchronize()»: [FreePascal Wiki | Многопоточный учебник по приложениям | Класс TThread] (http://wiki.freepascal.org/Multithreaded_Application_Tutorial#The_TThread_Class) –
@RemyLebeau Мне нужен механизм блокировки без блокировки, и я получил его с помощью (thread-safe) 'Application.QueueAsyncCall' в Lazarus и' PostMessage' в невидимое окно (через 'AllocateHWnd') в Delphi. Конечно, я использовал класс 'TThread', но' Synchronize' не помог мне в этом случае из-за его функции рандеву. Спасибо в любом случае :) – Wolf
'TThread' также имеет асинхронный метод' Queue() '. –