使用CArchive下载和存储对象.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用CArchive下载和存储对象

使用CArchive下载和存储对象   CArchive是负责将一个类的内容串行化到一个文件中的MFC类。CArchive可从磁盘中读写二进制的数据。CArchive负责调用你对象的串行化方法。当它调用串行化时,它用来下载或者存储(由IsLoading()或者IsStoring指示)。   该archive经常与一个CFile对象结合起来。当你构造一个CArchive时,你必须传送入一个打开的CFile对象中。在我们的例子中,我们将其串行化到一个驻留留存的文件中(CMemFile)。我们这样做的目的是为了将该对象复制到内存中,这样我们可以将它装载到一个COM数组中,并且通过网络发送出去。   串行化的工作有两个方向--对象变为数据流,还有数据流还原为对象。第一步首先要将这个对象变成为一个数据流。以下就给我们展示了如何创建一个archive,将一个对象变为一个文件:   CMemFile memfile; // memory file   file:// define the flag which tells archive if it should load or store   long lMode = CArchive::store | CArchive::bNoFlushOnDelete;   // create the archive using the memory file   CArchive ar(memfile, lMode );   当一个archive创建的时候,它需要知道它是在串行化或者还原一个对象。只要在构造器中设置其模式为to CArchive::store或者CArchive:load就可以了。   现在这个archive已经准备好用作串行化了。就这个例子来说,我们将创建一个简单的对象,并且使用archive串行化它。   CSimpleObj Obj;   file:// set the data member   Obj.m_strData = This is an object.;   // m_pDocument is not used   ar.m_pDocument = NULL;   // serialize the object into the archive   ar.WriteObject(Obj);   // close the archive - the data is now stored in memfile   ar.Close(); 以上的代码将一个对象的串行化字节流放入到一个内存文件中。如果你调试到WriteObject调用,你可以最终发现调用你对象中的Serialize()。这个文件现在可以拷贝到一个COM数组中传送。还原对象的操作可通过调用ar.ReadObject()完成。   串行化的另一个过程是,还原。它包括获得一个充满字节的缓存,并且将它还原为C++对象。这个操作有几个步骤。第一步是将一个数据缓冲送给一个CMemFile对象。这可以让CMemFile对象来接管并且访问到缓存。变量pBuffer是一个指向一个充满字节缓存的指针,这些缓存是我们通过串行化一个对象得到的。变量的长度是字节数的总和。   file:// attach the buffer to the memory file   memfile.Attach((unsigned char*)pBuffer, lLength);   file:// start at beginning of buffer   memfile.SeekToBegin();   现在我们可以创建archive对象。要将一个文件还原为对象,必须创建CArchive对象。刚才我们说的CMemFile就用在这里,通过load属性可创建archive,并且告诉它从内存文件中下载该对象。还原实际上是由ReadObject方法完成的。通过使用IsLoading()标记的Serialize,ReadObject可以创建对象并且下载成员的数据。   file:// create an archive with the attached memory file   CArchive ar(memfile, CArchive::load|CArchive::bNoFlushOnDelete);   // document pointer is not used   ar.m_pDocument = NULL;   // inflate the object and get the pointer   rpObj = ar.ReadObject(0);   现在对象已经创建了,我们只需将没用的东西清除。我们要关闭archive,并

文档评论(0)

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

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

1亿VIP精品文档

相关文档