下面是一个文件流读取的例子,怎么改成将创建的文件流以二进制的格式保存到本地硬盘,在读取二进制文件,在ole里面显示word文档呢?!请前辈指教。 
procedure TFrmWord.Button9Click(Sender: TObject); 
var 
FileName:string; 
sm:TstringStream; 
begin 
try 
if opendialog1.Execute then begin 
FileName:=opendialog1.FileName; 
olecontainer1.CreateObjectFromFile(FileName,true); 
olecontainer1.DoVerb(ovPrimary); 
sm := tstringstream.create(''); 
olecontainer1.savetostream(sm); 
with dm.qryTemp do 
begin 
append; 
TBlobFIELD(Fieldbyname('data')).LoadFromStream(sm); 
post; 
end; 
finally 
sm.free; 
end; 
end; 

解决方案 »

  1.   

    用内存流TMemoryStream最简单,用TFileStream比较麻烦一点procedure TForm1.Button9Click(Sender: TObject);
    var
      FileName: string;
      MemStrm: TMemoryStream;
    begin
      if opendialog1.Execute then begin
        FileName := opendialog1.FileName;
        olecontainer1.CreateObjectFromFile(FileName, true);
        olecontainer1.DoVerb(ovPrimary);    MemStrm := TMemoryStream.create('');
        try
          olecontainer1.savetostream(MemStrm);
          MemStrm.Position := 0; //复位流指针到MemStrm的开始位置
          MemStrm.SaveToFile('D:\二进制文件.二进制');
          {//**以下是读取代码 
          MemStrm.Clear;
          MemStrm.LoadFromFile('D:\二进制文件.二进制');
          MemStrm.Position := 0; //复位流指针到MemStrm的开始位置
          olecontainer1.LoadFromStream(MemStrm);
          }
          with dm_qryTemp do
          begin
            append;
            MemStrm.Position := 0; //复位流指针到MemStrm的开始位置
            TBlobFIELD(Fieldbyname('data')).LoadFromStream(MemStrm);
            post;
          end;    finally
          MemStrm.free;
        end;
      end
    end;
      

  2.   

    老师不敢当!再说我也正在研究一些.Net技术,没有时间专门和你探讨Delphi技术;如果你有问题直接在CSDN上提问就可以了,再者可能不同的人方向不一样,并不是我一个人就能解决你所有的问题。真的不好意思!
      

  3.   

    还是有问题!不激活ole为什么只能显示一页!?能不能显示完整!/