branchinfo.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /************************************************************************/
  2. /*
  3. branchinfo.dat的写入读出序列化过程
  4. */
  5. /************************************************************************/
  6. void WriteArchive(IN LPCTSTR lpFileName /* branchinfo.dat文件路径 */)
  7. {
  8. int nArySize = 2; // 示例要写入的个数;
  9. CArray<CStringArray,CStringArray> MybranchInfo;
  10. MybranchInfo.SetSize(nArySize,1);
  11. // 分店1;
  12. MybranchInfo.ElementAt(0).Add(_T("20150617162809502788.ly.com"));
  13. MybranchInfo.ElementAt(0).Add(_T("儿童分店A"));
  14. MybranchInfo.ElementAt(0).Add(_T("192.168.1.250"));
  15. MybranchInfo.ElementAt(0).Add(_T("总店"));
  16. MybranchInfo.ElementAt(0).Add(_T("利亚方舟"));
  17. MybranchInfo.ElementAt(0).Add(_T(""));
  18. MybranchInfo.ElementAt(0).Add(_T(""));
  19. // 分店2;
  20. MybranchInfo.ElementAt(1).Add(_T("20140913092332521757.ly.com"));
  21. MybranchInfo.ElementAt(1).Add(_T("儿童分店B"));
  22. MybranchInfo.ElementAt(1).Add(_T("192.168.1.110"));
  23. MybranchInfo.ElementAt(1).Add(_T(""));
  24. MybranchInfo.ElementAt(1).Add(_T("利亚方舟"));
  25. MybranchInfo.ElementAt(1).Add(_T(""));
  26. MybranchInfo.ElementAt(1).Add(_T(""));
  27. // 创建内存文件;
  28. CMemFile MembranchInfo;
  29. CArchive ar(&MembranchInfo,CArchive::store);
  30. for ( int i = 0; i < nArySize; i++)
  31. {
  32. // 将数组序列化到对象中;
  33. MybranchInfo.ElementAt(i).Serialize(ar);
  34. }
  35. ar.Close();
  36. DWORD fLength = MembranchInfo.GetLength();
  37. PBYTE pData = MembranchInfo.Detach();
  38. CFile fb;
  39. if (fb.Open(lpFileName, CFile::modeCreate|CFile::modeWrite))
  40. {
  41. fb.Write(&nArySize,sizeof(DWORD)); // 写入数组个数;
  42. fb.Write(pData,fLength); // 写入数组内容;
  43. DWORD dwFlag = 889900;
  44. fb.Write(&dwFlag,sizeof(DWORD)); // 写入结束标记;
  45. fb.Close();
  46. }
  47. }
  48. void ReadArchive(IN LPCTSTR lpFileName /* branchinfo.dat文件路径 */)
  49. {
  50. CFile fp;
  51. CArray<CStringArray, CStringArray>array;
  52. if( PathFileExists(lpFileName))
  53. {
  54. fp.Open(lpFileName, CFile::modeRead);
  55. DWORD leng = fp.GetLength();
  56. if ( leng >= sizeof(DWORD)*2 )
  57. {
  58. DWORD flag;
  59. fp.Seek(-(int)sizeof(DWORD),CFile::end);
  60. fp.Read(&flag, sizeof(DWORD));
  61. if(flag == 889900)
  62. {
  63. fp.SeekToBegin();
  64. DWORD leng=fp.GetLength();
  65. DWORD arraysize;
  66. fp.Read(&arraysize, sizeof(DWORD));
  67. BYTE *pData=new BYTE[leng-sizeof(DWORD)];
  68. fp.Read(pData,leng-sizeof(DWORD));
  69. fp.Close();
  70. CMemFile memfile;
  71. memfile.Attach(pData,leng-sizeof(DWORD));
  72. CArchive ar(&memfile, CArchive::load);
  73. array.SetSize(arraysize);
  74. int i = 0;
  75. for(i = 0; i<array.GetSize(); i++)
  76. {
  77. try
  78. {
  79. array.ElementAt(i).Serialize(ar);
  80. }
  81. catch(CArchiveException *e)
  82. {
  83. e->ReportError();
  84. }
  85. }
  86. ar.Close();
  87. memfile.Detach();
  88. delete []pData;
  89. }
  90. else
  91. {
  92. fp.Close();
  93. }
  94. }
  95. else
  96. {
  97. fp.Close();
  98. }
  99. }
  100. int nSize = array.GetSize();
  101. for ( int i = 0; i < nSize; i++)
  102. {
  103. OutputDebugString(array.ElementAt(i).ElementAt(0));OutputDebugString(_T("\n")); // 域名;
  104. OutputDebugString(array.ElementAt(i).ElementAt(1));OutputDebugString(_T("\n")); // 分店名;
  105. OutputDebugString(array.ElementAt(i).ElementAt(2));OutputDebugString(_T("\n")); // ip;
  106. OutputDebugString(array.ElementAt(i).ElementAt(3));OutputDebugString(_T("\n")); // 是否总店, 是,填写"总店"; 否,填写空;
  107. OutputDebugString(array.ElementAt(i).ElementAt(4));OutputDebugString(_T("\n")); // 企业名;
  108. OutputDebugString(array.ElementAt(i).ElementAt(5));OutputDebugString(_T("\n")); // 权限;
  109. OutputDebugString(array.ElementAt(i).ElementAt(6));OutputDebugString(_T("\n")); // 可访问的界面名称;
  110. OutputDebugString(_T("\n"));
  111. }
  112. }