Doc文件从数据库中导出为何出现乱码?(200分)

  • 主题发起人 主题发起人 lhq_311
  • 开始时间 开始时间
L

lhq_311

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ole创建一个Doc文件,然后保存成功,当我从数据库中读取给文件保存导本地时,却出现乱码?
TblobField(adodst.FieldByName('doc')).SaveToFile ('d:/aaa.doc');
 
用ole创建的带着ole的信息,所以乱码
 
解决别的问题时,无意中试出了下面的代码,它可以把OleContainer中的文档保存成
word的.doc格式:
var srm:TMemoryStream;
srmb:TFileStream;
begin
srm:=TMemoryStream.Create;
srmb:=TFileStream.Create('e:/3.doc',fmcreate);
with self.OleContainer1 do begin
if State<>osEmpty then
savetoStream(srm);
end;
srm.Seek(sizeof(TStreamHeader),0);
srmb.CopyFrom(srm,srm.Size-sizeof(TStreamHeader)-1);
srm.Free;
srmb.Free;
end;
 
我给你一个解决方案:
数据库里的字段用memo类型就行了,至于DOC吗,你在存的时候存储为RTF格式,然后你就可以用dbRichEdit来连接memo字段了,当然,你也可以在RichEdit里更改、调用RTF、存储RTF文件。
 
应该是保存的时候出的问题!
还有用ole好象比直接调用WORD 慢哦
为什么不直接掉word?
word 文当存数据库再导出应该不会有乱码!
 
数据库字段是否支持unicode?
 
忘了TStreamHeader要自己声明,其实在OleCtnrs中有,但无法引用
TStreamHeader = record
case Integer of
0: ( { New }
Signature: Integer;
DrawAspect: Integer;
DataSize: Integer);
1: ( { Old }
PartRect: TSmallRect);
end;
 
后退
顶部