我试图将发送的文本文件显示到memo.lines而不将其保存到磁盘
来自服务器
try
Ms := TMemoryStream.Create;
Ms.LoadFromFile('update.txt');
Ms.Position := 0;
AContext.Connection.IOHandler.LargeStream := True;
AContext.Connection.IOHandler.Write(Ms, 0, True);
finally
Ms.Free;
end;
到客户端...我不知道如何在客户端
中执行此操作 try
Ms := TMemoryStream.Create;
Ms.Position := 0;
IdTCPClient1.IOHandler.LargeStream := True;
IdTCPClient1.Connection.IOHandler.ReadStream(Ms, -1,false);
finally
Memo1.Lines.LoadFromStream(Ms);
Ms.Free;
end;
有人可以帮助我如何做到这一点吗?
答案 0 :(得分:3)
您的代码很好,您只是忘记在调用Memo的Position
方法之前将流的LoadFromStream()
属性重置为0:
IdTCPClient1.Connection.IOHandler.ReadStream(Ms, -1,false);
Ms.Position := 0; // <-- add this
Memo1.Lines.LoadFromStream(Ms);
答案 1 :(得分:0)
如果我是你,我仍然会缓冲读取的数据,原因有两个:
如果您不想将发送的数据保存到磁盘,您仍然可以将其保存到 TMemoryStream 实例,该实例可用作备忘录的参数。 .LoadFromStream()方法。