Ich arbeite an einer Komponente, die zwischen Delphi und C++ Builder freigegeben werden soll, also verwende ich Pascal als lingua franca. Weil ich zu Hause Delphi nicht auf meinem Computer habe, habe ich zuerst die Komponente in der Lazarus IDE erstellt. Jetzt habe ich "portiert" es nach Delphi und fand eine erstaunliche Syntax Problem:Ereigniszuweisungssyntax in verschiedenen Object Pascal-Dialekten
Dies kompiliert mit FPC (aber nicht Delphi):
FSync.FSyncMethod := @SyncCheckInput;
Dies kompiliert mit Delphi (aber nicht FPC):
FSync.FSyncMethod := SyncCheckInput;
Wie kann ich trotz dieser syntaktischen Divergenz eine Einheit zwischen Lazarus und Delphi teilen?
"* Fehlen eines gemeinsamen (und portablen) Synchronisationsmechanismus *" - FreePascal ahmt viele der Delphi-Kernklassen nach, einschließlich 'TThread' und seine' Synchronize() 'Methode: [FreePascal Wiki | Multithreaded Application Tutorial | Die TThread-Klasse] (http://wiki.freepascal.org/Multithreaded_Application_Tutorial#The_Thread_Class) –
@RemyLebeau Ich brauchte einen nicht-blockierenden Synchronisationsmechanismus und ich habe es mit (dem thread-sicheren) 'Application.QueueAsyncCall' in Lazarus und' PostMessage 'zu einem unsichtbaren Fenster (über' AllocateHWnd') in Delphi. Natürlich habe ich die "TThread" -Klasse verwendet, aber "Synchronize" war in meinem Fall wegen seiner Rendezvous-Funktion nicht hilfreich. Danke trotzdem :) – Wolf
'TThread' hat auch eine asynchrone' Queue() 'Methode. –