如何显示文件(100分)

  • 主题发起人 主题发起人 chenlotus
  • 开始时间 开始时间
C

chenlotus

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库表中有一个字段存储的是二进制数据,(后台数据库为sqlserver,字段类型为varbinary)
,字段内容是某一个文件的内容。如何将字段的二进制数据读出恢复成原来的文件(如一个word文档)。
如果要用一个控件来显示文件的话,用什么比较好,olecontainer可以吗?


































































 

doc_ole:tolecontainer;
...
//从数据库中取出并在olecontainer中显示。
procedure TForm1.button1click(sender:Tobject);
var
memsize:integer;
buffer:pchar;
myfile:tfileStream;
stream:tblobstream;
begin
myfile:=tfilestream.create('c:/temp.tmp',fmcreate);
with table1 do
open;
stream:=tblobstream.create(fieldbyname('doc') as tblobfield,bmread);
memsize:=stream.size;
inc(memsize);
buffer:=allocmem(memsize);
try
stream.read(buffer^,memsize);
myfile.write(buffer^,memsize);
statictext1.caption:='文件名:'+fieldbyname('name').asstring;
statictext2.caption:='文件大小:'+fieldbyname('size').asstring+'字节';
finally
myfile.free;
stream.free;
end;
end;
if fileexists('c:/temp.doc') then
deletefile('c:/temp.doc');
if fileexists('c:/temp.tmp') then begin
renamefile('c:/temp.tmp','c:/temp.doc');
doc_ole.createobjectfromfile('c:/temp.doc',false);
doc_ole.run;
end;
end;
以上一口气敲完,也不知有没有错,反正原理就是这样。
 
非常感谢热心的大富翁!
 
接受答案了.
 
后退
顶部