当前位置: 首页 > news >正文

橙色企业网站源码网站建设 环保素材

橙色企业网站源码,网站建设 环保素材,网站建设应该列入什么科目,asp企业网站文章目录 MFC - CArchive/内存之间的序列化应用细节概述笔记END MFC - CArchive/内存之间的序列化应用细节 概述 有个参数文件, 开始直接序列化到文件. 现在优化程序, 不想这个参数文件被用户看到. 想先由参数发布程序(自己用)设置好参数后, 加个密落地. 等用户拿到后, 由程序…

文章目录

    • MFC - CArchive/内存之间的序列化应用细节
    • 概述
    • 笔记
    • END

MFC - CArchive/内存之间的序列化应用细节

概述

有个参数文件, 开始直接序列化到文件.
现在优化程序, 不想这个参数文件被用户看到.
想先由参数发布程序(自己用)设置好参数后, 加个密落地.
等用户拿到后, 由程序导入到程序运行时指定的数据目录.
程序运行时, 先解密参数文件到内存, 然后再由MFC序列化到类中的变量.
查了一下, 有大神出了文章(https://www.codeproject.com/Articles/1176939/All-About-MFC-Serialization), 将MFC序列化的各种细节都讲了.

不过有些细节要自己实验才能确定. e.g. CArchive向流中序列化写入不同的内容, 这个流空间需要开多长?
针对流的序列化, 自己做了实验, 用到的实现细节都测试了.
可以在自己工程中应用(CArchive/流之间的序列化)了.

笔记


void buf_save_to_ar(uint8_t* pBuf, UINT lenBuf)
{bool b_rc = false;CMemFile memFile;uint64_t lenFile = 0;do {if ((NULL == pBuf) || (0 == lenBuf)){break;}// memFile.Close(); // @todo for test, 没有attch的时候, 也不会报错.// lenFile = memFile.GetLength(); // 0 , 没有attach的时候, 或者关闭后, 不报错, 返回的文件长度为0memFile.Attach(pBuf, lenBuf);// lenFile = memFile.GetLength(); // 0x100, Attach Buffer后, 文件长度就是Buffer的长度CArchive ar(&memFile, CArchive::store);//ar << CString(_T("1")); // 如果buffer长度不足, 也不报错, 看来要将buffer长度给够 ff fe ff 01 31 00//ar.Flush(); // for test//ar << CString(_T("12")); // 如果buffer长度不足, 也不报错, 看来要将buffer长度给够 ff fe ff 02 31 00 32 00//ar.Flush(); // for test//ar << CString(_T("1"));//ar.Flush(); // ff fe ff 01 31 00//ar << CString(_T("2")); ff fe ff 01 31 00 ff fe ff 01 32 00//ar.Flush(); // for testar << CString(_T("hello")); // 如果buffer长度不足, 也不报错, 看来要将buffer长度给够// ff fe ff 05 68 00 65 00 6c 00 6c 00 6f 00 ar.Flush(); // for test// lenFile = ar.GetFile()->GetLength(); // 这个长度和序列化无关, 就是attach的buffer长度ar << CString(_T("world"));ar.Flush(); // for testtry {// 如果buffer给的长度不够, 关闭ar时会报错// catch不住// 所以buffer要留够, 给序列化内容长度估算的1.1倍数, 可能靠谱一些ar.Close(); //  ff fe ff 05 68 00 65 00 6c 00 6c 00 6f 00 ff fe ff 05 77 00 6f 00 72 00 6c 00 64 00 ed ed fd fd fd fd // 可以看到留出的保险字符位置并没有被覆盖}catch (CArchiveException* e){e->IsSerializable();b_rc = false;break;}b_rc = true;} while (false);_ASSERT(b_rc);memFile.Close();
}void ar_load_from_ar(uint8_t* pBuf, UINT lenBuf)
{bool b_rc = false;CMemFile memFile;CString csHello;CString csWorld;do {if ((NULL == pBuf) || (0 == lenBuf)){break;}memFile.Attach(pBuf, lenBuf);CArchive ar(&memFile, CArchive::load);ar >> csHello;// now csHello is _T("hello")ar >> csWorld;// now csWorld is _T("world")ar.Close();b_rc = true;} while (false);_ASSERT(b_rc);memFile.Close();
}void CTestArBufDlg::OnBnClickedButton1()
{uint8_t* pBuf = NULL;UINT lenBuf = 0; // 根据要写入的内容多少, 估算好长度后, 来开bufferCString csTmp;int iLenTmp = 0;int i = 0;int iCntCString = 0; // 假设要序列化的是下面这2个CString// CString(_T("hello"))// CString(_T("world"))csTmp = _T("hello");iCntCString++;iLenTmp = csTmp.GetLength(); // 5lenBuf += iLenTmp;csTmp = _T("world");iCntCString++;iLenTmp = csTmp.GetLength(); // 5lenBuf += iLenTmp;// ff fe ff 01 31 00// 每次ar一次CString, 就需要增加4个字节(0xff, 0xfe, 0xff 可能是CString的类标记(以后遇到机会, 可以再试试别的数据类型), 01 代表CString的TCHAR字符数量)// lenBuf 现在是WCHAR的数量, 要转成uint8_t的数量lenBuf = lenBuf * sizeof(TCHAR);lenBuf += (iCntCString * 4); // 存一次CString, 就有4个字节的头信息lenBuf += sizeof(TCHAR); // 留个保险字节的位置// now lenBuf is 0x16// 开bufferpBuf = new uint8_t[lenBuf];_ASSERT(NULL != pBuf);// 自己的内存调试标记可以为0xED. MFC调试标记为0xCD, 0xFD, 0xDDmemset(pBuf, 0xED, lenBuf);// test use CArchive load-from/save-to buffer// 如果向流中进行序列化写入, 则需要考虑开多大的流空间, 否则报错(catch不住)buf_save_to_ar(pBuf, lenBuf);// 如果是从流中载入序列化, 则不需要考虑buffer的长度, 因为这个buffer是已经确定的, 正确的(由前面的序列化写入保证)ar_load_from_ar(pBuf, lenBuf);// all ok
}

END

http://www.yayakq.cn/news/710716/

相关文章:

  • 关于我们网站设计网店开店流程
  • 有什么设计网站推荐网站版块模板
  • 如何建设一个电商网站自助建站系统破解版
  • 怎么做网站交易健身网站开发开题报告
  • 做网站需要注意的事项建设网站转赚钱吗
  • 齐全的网站建设电子商务网站面临的安全隐患有哪些
  • 湖南做网站公司有哪些简单5步_制作wordpress留言板
  • 旅行社服务网点能否做网站机关门户网站 建设 方案
  • 重庆建站管理系统开发在线A视频做爰网站
  • 免费网站站建筑工程劳务信息平台
  • 郑州网站建设的软件广告免费设计在线生成
  • 建设网站的本质家具设计图纸三视图
  • 郯城建设局网站wordpress小程序调用数据库字段
  • 如何建设平台型的网站google浏览器官网
  • 高端商品网站中小学网站建设排行2017
  • 潍坊高新建设局网站wordpress主题接入社交功能
  • 设计素材网站飘网站建设收费标准报价
  • 西安网站开发技术下载好了网站模板怎么开始做网站?
  • 网站开发工程师应聘书范文700字任县网站建设公司
  • 温州网站建设排名网易云wordpress
  • 受欢迎自适应网站建设地址泰安市住房建设局网站
  • 网站设计说明书范文海珠营销型网站制作
  • 给我推荐一个网站济南mip网站建设
  • 购物网站建设图标大全wordpress插件包
  • 建设牌安全带厂家网站海南省建设执业中心网站
  • 郑州营销网站托管公司哪家好在住房城乡建设部网站上哪里下载规范
  • 做网站一般用什么 语言企业现在有必要做网站吗
  • 赣县城乡规划建设局网站360推广 网站建设
  • 东莞专业网站建设公司3d建模培训学校
  • 网站开发 在html标记后出现乱码 查看源文件显示是问好营销策划师资格证