TmemoryStream合并熟悉请进来指点一下?(16分)

  • 主题发起人 主题发起人 shuiwen
  • 开始时间 开始时间
S

shuiwen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用memoryStream实现向richedit中添加数据,并向保存原来的数据,所以想到合并流文件的方法,下边的方法为啥不能实现?
var
s_RichEdit1: TMemoryStream;
s_RichEdit2,newstream : TMemoryStream;
begin
s_RichEdit1 := TMemoryStream.Create;
s_RichEdit2 := TMemoryStream.Create;
newstream := TMemoryStream.Create;
RichEdit1.Lines.SaveToStream(s_RichEdit1);//保存流1
RichEdit2.Lines.SaveToStream(s_RichEdit2);//保存流2

s_RichEdit1.Position:=0;
newstream.CopyFrom(s_RichEdit1, s_RichEdit1.Size);

s_RichEdit2.Position:=0;
newstream.CopyFrom(s_RichEdit2,s_RichEdit2.size);

newstream.Position := 0;
RichEdit3.Lines.Clear;
RichEdit3.Lines.LoadFromStream(newstream);
为什么最后RicheEdit3里显示只是RicheEdit1的内容?流合并有问题吗?请指点。
 
因为rtf文件是有格式的文件,richedit在解码的时候,读完第一个stream的数据时,就会认为已经结束,第二个的被忽略了。
 
铁盒子:我想实现流合并问题,如何在RichEdit中实现呢?关键是
Line.Loadfromstream(),如果能有line.Addstream就好了,这样我就不用保存原来的流了。
 
铁盒子说的对。你合成后的文件头的信息是RicheEdit1的头。
格式文件合成要合成数据部分。并且重新写文件头。就像合成2个声音一样。
 
搂主是要实现两段richedit文字的合并吧
如果不打算研究richedit的编码 建议用剪切板实现 方法笨一点但是有效
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Clear;
RichEdit2.SelectAll;
RichEdit2.CopyToClipboard;
RichEdit1.PasteFromClipboard;
RichEdit3.SelectAll;
RichEdit3.CopyToClipboard;
RichEdit1.PasteFromClipboard;
end;
 
网中戏,:能详细指点下代码该怎么写,本人对流操作比较菜:(
 
后退
顶部