很简单;OleContainer1.SaveToStream(s);
s是有格式的有个文件头指明了ole的格式大小;
再追加
          S2.seek(0,0);
          showmessage(inttostr(s2.size));
          s2.SaveToStream(s3);  //可以追加的
          s3.Seek(0,1);
          showmessage(inttostr(s3.size));//循环结束后,s3大小确实是前两者之和
          
只能是把数据附加到第一个流里面;
ole文件头没改就好像你把多个.wav 文件合并为一个文件;放映只有第一个

解决方案 »

  1.   

    我的读流代码是//从数据库读到ole中,
    procedure TForm1.readtoole1Click(Sender: TObject);
    var
      s:TADOBlobStream;
    begin
      s:=TADOBlobStream.Create(ADOTable1content,bmRead);
    楼上兄弟的话我不明白,你到底要我改什么地方????
      s.position:=0 ;
      showmessage(inttostr(s.size));
      OleContainer1.LoadFromStream(s);
      s.free;
    end;
      

  2.   

    我想你应该试验txt的合并,如果txt合并成功,那么证明数据没有问题。
    doc的合并,绝对不是两个文件简单的叠加可以解决的。
      

  3.   

    txt文件早就试过了,大小是两者之和,可内容还是第一个流的内容;
    不过我知道不用OleContainer,写库是用TFILEStream,
    procedure TForm1.Button4Click(Sender: TObject);  
    var  
      DS: TFILEStream;  
    begin  
      if opendialog1.Execute then  
      begin  
         DS := TFILEStream.Create(opendialog1.filename, fmOpenRead);  
         DS.Position := 0;  
         with table1 do  
         begin  
           append;  
           (FieldByName('figure') as TBlobField).LoadFromStream(DS);  
           post;  
         end;  
        
        DS.FREE;  
      end;  
    end;  
    对于文本文件来说是可以合并的,用memo,richedit都可以正常显示,不过用ole不能显示;
    这种方法我之所以没有用,是因为word文档内容仍不能被合并(大小倒是合并了),而我
    现在做的这个东东最关键是就是要求合并word文档,所以向大家求救!!
    gz,gz
      

  4.   

    Word文档的合并,你必须借助于VBA。因为,除非你知道Word文档的格式,否则单纯的两个文件的叠加是没有用的。
    不相信你可以做一个测试,写两个Word文档,在将这两个文档归并到第三文档中。我保证第三个文档的大小不等于前面两个文档的和。
    可以考虑用VBA中的INSERTFILE的方法。
      

  5.   

    'VBA中的INSERTFILE的方法 '
    我不懂vb,在delphi中怎么调用呢???
      

  6.   

    Delphi中当然可以调用,不过具体还是需要查看VBA的Help或者MSDN。你Uses Word97(或者Word2000)。
    然后在Range的Interface中有InsertFile这个方法。这是示例代码。
    var
      a: _Application;
      c, d: OleVariant;
    begin
      c := 0;
      d := 0;
      // get the interface of a
      a.ActiveDocument.Range(c, d).InsertFile('YourFile.doc', EmptyParam,
        EmptyParam, EmptyParam, EmptyParam);
    end;