下面是一个文件流读取的例子,怎么改成将创建的文件流以二进制的格式保存到本地硬盘,在读取二进制文件,在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;
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;
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;