**我想把RxRichEdit里面图文混编的内容保存到数据库里面,用什么方法最好
RxRichEdit里面既有图片又有文字,用什么方法保存,即节省空间,效率又比较高呢?
[解决办法]
保存成流格式在数据库中,不过如果数据很大的话,保存成文件存放在电脑上吧,数据库就只保存路径
流格式大概像这样:
var MS:TMemoryStream;begin MS:=TMemoryStream.Create; try Adoquery1.append; RxRichEdit.Lines.SaveToStream(MS); MS.Position:=0; TBlobField(Adoquery1.FieldByName('KKOO')).LoadFromStream(MS); Adoquery1.post; finally MS.Free; end;end;
[解决办法]
RichEdit 存为流同样是 rtf编码,这个编码就是以16进制的文本来保存二进制数据,一个二进制字节,要用3个字节来保存,再加上格式控制码字节会比3个字节还多, (类似\hh 的文本,当然占的空间大了),既然是可见纯文本,用Zlib压缩一下吧,压缩比能达到5:1,空间是很可观的,效率上稍微要慢一点点,不过对单记录来说不会有感觉的。
首先把RichEdit存到内存流中,然后用TCompressionStream压缩,最后把输出流保存到数据库中,解压缩反之,用TDecompressionStream而已。