Я использую 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;