Tôi đang làm việc trên một thành phần cần được chia sẻ giữa Delphi và C++ Builder, vì vậy tôi đang sử dụng Pascal là lingua franca. Bởi vì tôi không có Delphi trên máy tính của tôi ở nhà, đầu tiên tôi đã tạo ra thành phần trong IDE Lazarus. Bây giờ tôi "chuyển" nó để Delphi và tìm thấy một vấn đề đáng kinh ngạc cú pháp:Cú pháp gán sự kiện trong các phương ngữ đối tượng Pascal khác nhau
này biên dịch với FPC (nhưng không Delphi):
FSync.FSyncMethod := @SyncCheckInput;
này biên dịch với Delphi (nhưng không FPC):
FSync.FSyncMethod := SyncCheckInput;
Làm thế nào tôi có thể chia sẻ một đơn vị giữa Lazarus và Delphi bất chấp sự phân kỳ cú pháp này?
"* thiếu cơ chế đồng bộ chung (và di động) *" - FreePascal bắt chước nhiều lớp lõi của Delphi, bao gồm 'TThread' và phương thức' Synchronize() ': [FreePascal Wiki | Hướng dẫn ứng dụng đa luồng | Lớp TThread] (http://wiki.freepascal.org/Multithreaded_Application_Tutorial#The_TThread_Class) –
@RemyLebeau Tôi cần một cơ chế đồng bộ hóa không bị chặn và tôi đã nhận nó với (Application -QueueAsyncCall' thread-safe) trong Lazarus và ' PostMessage' đến một cửa sổ vô hình (thông qua 'AllocateHWnd') trong Delphi. Tất nhiên, tôi đã sử dụng lớp 'TThread', nhưng' Synchronize' không hữu ích trong trường hợp của tôi vì tính năng hẹn hò của nó. Thanks anyway :) – Wolf
'TThread' cũng có một phương thức' Queue() 'không đồng bộ. –