错误信息:invalid stream format(200分)

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

cscqx

Unregistered / Unconfirmed
GUEST, unregistred user!
stream:=TMemoryStream.Create;
TBlobfield(Clientdataset1.FieldByName('filevalue')).SaveToStream(stream);
stream.Position:=0 ;
olecontainer1.LoadFromStream(stream);
OleContainer1.DoVerb (1);
//数据库中filevalue字段存储word文件,通过LoadFromStream时出错,怎么解决
 
我想从数据库里的文档*.doc(Blob字段),装入OleContainer1,数据库中表Blob字段中的文档是用其他方式存入的,如用TBlobField.LoadFromFile('aaa.doc'),如何装载到OleContainer1中?
 
(Clientdataset1.FieldByName('filevalue') as TBlobfield).SaveToStream(stream);
 
通过OLECONTAINER将WORD文件嵌入,再流化,存到库里
就可以通过olecontainer.loadfromstream读了
 
我不想通过OLECONTAINER将WORD文件嵌入,再流化,存到库里,有没有办法
 
在文档的头部,加上12个字节,也可以显示出来
 
你存入库里的流的格式与olecontainer.loadfromstream中流的格式不一样,当然不能读.
最好的解决办法还是xiaoyi所说的:"通过OLECONTAINER将WORD文件嵌入,再流化,存到库里
就可以通过olecontainer.loadfromstream读了"
或者你自己将两个流的格式变成一样的也可以!
 
怎么将两个流的格式变成一样啊
 
type
TStreamHead = record
Signature: Integer; //$434F4442
DrawAspect: Integer; //1
DataSize: Integer; //stream.size;
end;
var
head : TStreamHead;
ms : tmemorystream;
begin
stream:=TMemoryStream.Create;
ms := TMemoryStream.Create;
TBlobfield(Clientdataset1.FieldByName('filevalue')).SaveToStream(stream);
with head do
begin
Signature := $434F4442;
DrawAspect := 1;
DataSize := stream.size;
end;
ms.WriteBuffer(head,sizeof(head));
ms.CopyFrom(stream,0)
ms.postiont := 0;
olecontainer1.LoadFromStream(ms);
OleContainer1.DoVerb (1);
 
接受答案了.
 

Similar threads

I
回复
0
查看
1K
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部