我有一個TClientSocket組件的DLL,它用於與電話系統計算機通信。該DLL只在導出方法中具有PChar參數,並且不使用包。Delphi DLL - TClientSocket事件
當我用Delphi應用程序加載DLL時,所有的事件工作正常,到目前爲止沒有問題。
我的客戶是從控制檯Win32 Cobol程序調用這個DLL,並且TClientSocket在它發生時不會觸發事件,它使用主循環調用DLL中的檢查方法來知道是否有任何從DLL返回電話系統,如果它返回OK然後它調用Get方法,這裏是問題發生的地方:
在TClientSocket.OnRead事件中,我調用TClientSocket.Socket.ReceiveText,並有幾個來自服務器應用程序的返回,什麼讓我覺得這個事件只有在我從DLL調用一個方法時觸發,並且TClientSocket在緩衝區中持有多個返回值。
問題是我找不到任何分隔符來分割這個返回。
我該如何解決這個問題?有沒有什麼我可以添加到我的DLL,以確保OnRead事件每次都不會從Delphi程序調用時觸發?
我在DLL主程序中做了這個,並且第一次交互的DLL在GetMessage中停止,並且不向前移動。 – 2010-07-01 16:26:27
現在我知道GetMessage等待,直到它收到消息,所以我更改爲PeekMessage,但它返回-1,所以它熄滅。如果我刪除了測試,那麼它永遠不會加載應用程序。 – 2010-07-01 17:09:22
塞薩爾,也許罪魁禍首是COBOL應用程序 看到另一個類似的線程(它是.net,但似乎是處理同一問題) http://www.devnewsgroups.net/windowsforms/t10952-messageloop-thread.aspx – 2010-07-01 18:22:35