События Delphi DLL - TClientSocket

У меня есть DLL с компонентом TClientSocket, он используется, чтобы говорить с Машиной Телефонной системы. DLL только имеет параметры PChar в методах экспорта, и не использует пакеты.

Когда я загружаю DLL приложением Delphi, все события хорошо работает, без проблем до сих пор.

Мой клиент называет этот DLL из программы консоли Win32 Cobol, и TClientSocket не инициировали события, когда происходить, он использует основной цикл для вызова метода проверки в DLL к известному, если там какой-либо возврат из Телефонной системы, если он возвращается хорошо затем, он называет Получить Метод, и вот то, где проблема происходит:

В TClientSocket. Событие OnRead, я называю TClientSocket. Сокет. ReceiveText, и существуют несколько возвратов из приложения для сервера, что заставляет меня думать, что событие только инициировано, когда я называю метод от DLL, и TClientSocket содержит несколько возвратов в буфере.

Проблема состоит в том, что я не могу найти, что любой Разделитель разделяет этот Возврат.

Как я могу зафиксировать это? Есть ли что-нибудь, что я могу добавить к своему DLL, чтобы удостовериться, что событие OnRead будет инициировано каждый раз, когда это не назовут из Программы Delphi?

1
задан Cesar Romero 1 July 2010 в 14:42
поделиться

1 ответ

вам, вероятно, понадобится цикл сообщений в вашей dll .. (Консольные приложения не имеют сообщения насос ..). ТАК реализуйте что-то вроде этого в вашем конструкторе dll:

var Msg : TMsg;
     res : Integer;

.
. .

While true Do Begin
        res := Integer( GetMessage(Msg, 0, 0, 0 ));
        If res = -1 Then
          Exit  // error
        else if res = 0 then
          exit  // WM_QUIT received
        else begin
          TranslateMessage( Msg );
          DispatchMessage( Msg );
        end;
End; { While }

Посмотрите похожую беседу http://www.mofeel.net/1102-comp-lang-pascal-delphi-misc/2763.aspx

2
ответ дан 2 September 2019 в 23:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: