请教indy9转到indy10的问题

guyuelang 2009-12-16 04:04:43
在indy9中用的FReceiveStream: TMemoryStream;

procedure TChatInfo.UDPServerUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
FReceiveStream.Clear;
FReceiveStream.LoadFromStream(AData);
FReceiveStream.Read(MessageID, SizeOf(MessageID));
在indy10中这个TMemoryStream该怎么转换呢?
在indy10中不是AData: TStream;是AData: TBytes;了 该怎么转换过来呢?
用BytesToRaw RawToBytes吗?
比如 FSendStream.Write(MessageID, SizeOf(MessageID));
UDPClient.SendBuffer(ABinding.PeerIP, UDPClientServerPort, FSendStream.Memory^, FSendStream.Size);
是否该 FSendStream.Write(MessageID, SizeOf(MessageID));
UDPClient.SendBuffer(ABinding.PeerIP, UDPClientServerPort, RawToBytes(FSendStream.Memory^, FSendStream.Size));行吗?

是不是把TBytes写到TMemoryStream里面再用,是该怎么个写法呢?
求高人指点指点啊,谢谢谢谢啊~~
...全文
519 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mihi1978 2010-12-01
  • 打赏
  • 举报
回复
你要改写 你的函数 。
不要考虑 把stream改写成 Tidbytes。
而考虑把源数据结构改写成Tidbytes.
比如原先是 string to stream
现在是string to tidbytes.
Indy里边,关于tidbytes的转换函数有很多!
Frank.WU 2010-11-27
  • 打赏
  • 举报
回复
不太清楚,很少用 INDY,
你可以试一试 RawToBytes ,相对应的 BytesToRaw,

uses Idglobal;

var
Buf: TidBytes;
haitao 2010-02-28
  • 打赏
  • 举报
回复
indy也是,9到10,也不会保留、兼容9的方法。。。。。。
虽然保留旧方法可能会导致类庞杂,但是只要分类清晰,可以让开发者慢慢自动放弃旧方法的

现在却是原代码无法直接升级。。。。。。
guyuelang 2010-02-27
  • 打赏
  • 举报
回复
看来没有人说了啊 还有人知道吗
guyuelang 2010-01-25
  • 打赏
  • 举报
回复
楼上的兄弟 你只说了一个地方
aizjcn 2009-12-21
  • 打赏
  • 举报
回复
ToBytes(StrEAM.Memory,StrEAM.Size);

guyuelang 2009-12-20
  • 打赏
  • 举报
回复
偶也是不太清楚啊
dd_zhouqian 2009-12-18
  • 打赏
  • 举报
回复
不太清楚
TMemoryStream是从TStream继承来的。
guyuelang 2009-12-16
  • 打赏
  • 举报
回复
看到僵哥大大的解说 不是太明白 该怎么用 那位好心人能举个例
Indy10有好几个版本。
Stream转Bytes

//第一个参数,就是那个TMemoryStream,第二个参数是一个TIdBytes类型,第三个是你需要取多少字节,返回值是实际取得的字节数
function ReadTIdBytesFromStream(const AStream: TStream; var ABytes: TIdBytes; const Count: Integer): Integer;

var
mem: TMemoryStream;
bytes: TIdBytes;
...
mem.Position := 0;
ReadTIdBytesFromStream(mem,Bytes,mem.Size);

反过来可以使用
procedure WriteTIdBytesToStream(const AStream: TStream; const ABytes: TIdBytes;
const ASize: Integer = -1; const AIndex: Integer = 0);

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧