Проблемы с отправкой / получением строк Libby Pipes в Delphi XE - PullRequest
1 голос
/ 17 января 2012

Я использую Russell Libby Pipes, последний раз модифицированный в 2010 году. У меня есть TpServer, отправляющий / получающий сообщения с несколькими TpClients.Это хорошо работало в Delphi7, но теперь в XE (недавно обновленной Pipes также до 2010) появляется строка с # 0 между символами, например.'9' # 0'8 '# 0'.Я подозреваю, что Unicode - проблема, но решение уклонилось от меня.Вот мой сервер отправки и получения клиента процедур.Любая помощь приветствуется.

procedure TfrmServer.CommSend(aStr: String);
begin  // Broadcast message; Messages are kept as short as possible
   editSend.Text := aStr;
   try
      Size := editSend.GetTextBuf(Buffer, 250);            // Put text into buffer
      PipeServer.Broadcast(Buffer^, Size*2);                 // Send the message to the Clients
      Application.ProcessMessages;
   except
   end;
end;

PROCEDURE TfrmClient.PipeMessage(Sender: TObject; Pipe: Cardinal; Stream: TStream);
VAR  // Incoming message
   xInStream: TStringStream;
   xSize: Integer;
BEGIN // Message received from network
   xInStream := TStringStream.Create('');
   TRY
      xSize := Stream.Size;
      xInStream.CopyFrom(Stream, xSize);                   // Copy stream to local variable
      editRcvd.Text := xInStream.DataString;

      frmOptions.NetMessage(editRcvd.Text);
   EXCEPT
      ShowMessage('DMS Client - Message Error: ' + editRcvd.Text); // Debug
   END;

   xInStream.Free;                                         // Erases any contents
END;
...