J'ai une DLL avec un composant TClientSocket, elle est utilisée pour parler à une machine du système téléphonique. La DLL possède uniquement des paramètres PChar dans les méthodes d'exportation et n'utilise pas de packages.Delphi DLL - événements TClientSocket
Lorsque je charge la DLL avec l'application Delphi, tous les événements fonctionnent correctement, aucun problème jusqu'à présent. Mon client appelle cette DLL à partir d'un programme console Win32 Cobol, et le TClientSocket ne déclenche pas les événements lorsque cela se produit, il utilise une boucle principale pour appeler une méthode de vérification dans DLL pour savoir s'il y a un retour de la Système téléphonique, si elle renvoie OK puis il appelle la méthode Get, et voici où le problème se produit:
Dans l'événement TClientSocket.OnRead, j'appelle TClientSocket.Socket.ReceiveText, et il y a plusieurs retours de l'application serveur, ce faites-moi penser que l'événement est seulement déclenché quand j'appelle une méthode de DLL, et le TClientSocket tient plusieurs retours dans la mémoire tampon. Le problème est que je ne trouve pas de délimiteur pour diviser ce retour.
Comment puis-je résoudre ce problème? Est-ce que je peux ajouter quelque chose à ma DLL pour m'assurer que l'événement OnRead sera déclenché chaque fois qu'il n'est pas appelé d'un programme Delphi?
Je l'ai fait dans la procédure principale DLL et la première interaction la DLL s'arrête dans GetMessage, et ne pas aller de l'avant. –
Maintenant, je sais GetMessage attendre jusqu'à ce qu'il reçoive un message, donc je passe à PeekMessage, mais il renvoie -1, donc il s'éteint. si je supprime le test, il ne chargera jamais l'application. –
Cesar, peut-être le coupable est l'application COBOL voir un autre fil similaire (il est. Net, mais semble avoir le même problème) http://www.devnewsgroups.net/windowsforms/t10952-messageloop-thread.aspx –