2012使用流实现文件的处理.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、 原理介绍--流式数据的类型及其应用 在Dephi中提供了TStream来支持对流式数据的操作。TStream是万流之源。 但由于它是一个抽象类,故不能被直接使用;而要使用其相应的子类, 如:TFileStream 、TStringStream、TMemoryStream、TBlobStream、 TWinSocketStream和TOleStream。TStream提供了统一、简洁的方法来进行数据的读写。 1.)SaveToStream(Stream: TStream ); 作用:将类中的数据写到Stream的当前位置中 2.)LoadFromStream(Stream: TStream); 作用:从当前位置读入Stream里的数据 实际使用时我们基本上只要使用上面两个函数就可以了。 二、所遇到的问题及相应的解决方法 为了节省图像的存储空间和使用更加方便,决定采用JPEG这种图像格式。 (一)所遇到的问题 第一、在Delphi 5中进行画图所用到的组件是TImage,所生成的图像的格式为BMP格式, 而为了节省图像的存储空间,图像在数据库里存储的格式须为JPEG格式,这样就产生了 图像格式转化的需求;而TImage本身并不直接提供这两种图像格式之间的转化。 第二、怎样将存储在Microsoft Access数据库中的图像取出并且显示出来:在Delphi 5 中,能提供这种功能的组件是TDBImage,但该组件却存在着一个很大的缺陷:它所能显 示的图像类型只能是一些图标文件,元文件和BMP文件,而不能支持JPEG格式的图像在 该组件中的显示;但根据实际需要,在Microsoft Access数据库中所存储的图像数据却 是以JPEG格式保存的。 (二)相应的解决方法 为了解决上述两个问题,可以采用目前数据库中一种名为大二分对象(BLOB--Bina ry Large Object),它是用来处理某些特殊格式的数据的。BLOB在数据库的表中实际上 是以二进制数据的形式存放的。为了处理BLOB字段,可以借鉴一些可视的桌面数据库的 方法。在这里,我们选择了通过内存流的方式来完成;使用内存流,可减少磁盘操作, 大大提高运行效率。 具体的过程和相关的程序代码如下: 1、如何实现在Microsoft Access数据库中的图像存储: 这里是利用TStream的子类TMemoryStream向Microsoft Access数据库中存储图像的。 下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序: procedure TForm1.Button1Click(Sender: TObject); var MyJPEG : TJPEGImage; MS: TMemoryStream; begin MyJPEG := TJPEGImage.Create; try with MyJPEG do begin Assign(Image.Picture.Graphic); MS:=TMemoryStream.create; SaveToStream(MS); MS.Position:=0; Table1.Edit; TBlobField(Table1.FieldbyName(Image)).LoadFromStream(MS); Table1.Post; messagebox(getactivewindow(),图像保存完毕!,保存,mb_ok); end; finally MyJPEG.Free; end; end; 在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式 的中间桥梁的作用。 2、如何将图像从Microsoft Access数据库中取出并显示出来: 下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序: procedure TForm1.Button1Click(Sender: TObject); var tempstream:TStringStream; tempjpeg:TJPEGImage; begin try tempstream:=TStringStream.Create(); TBlobField(Query1.FieldByName(Image)).SaveToStream(tempstream); tempstream.Position:=0; tempjpeg:=TJPEGImage.Create; tempjpeg.LoadFromStream(tempstream);

文档评论(0)

xqTDZJUaWh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档