You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
TwoLaserHead-PushJig/LaiPuLaser/SmartArchive.h

73 lines
1.2 KiB
C

#pragma once
#include "stdafx.h"
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ,<2C>ɼ<EFBFBD><C9BC>ݲ<EFBFBD>ͬ<EFBFBD>汾,(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĩβ<C4A9><CEB2><EFBFBD><EFBFBD>)
//<2F>÷<EFBFBD>:
/*
void WRdata(bool bWrite)
{
CSmartArchive sar(L".\\param.ini", bWrite);
sar + name;
sar + age;
sar + Weight;
}
*/
class CSmartArchive
{
public:
CSmartArchive(CString filePath, bool bStore)
{
pArchive =NULL;
if (bStore)
{
m_Mode = CArchive::store;
if (m_file.Open(filePath, CFile::modeCreate | CFile::modeWrite))
{
pArchive = new CArchive(&m_file, CArchive::store);
}
}
else
{
m_Mode = CArchive::load;
if (m_file.Open(filePath, CFile::modeRead))
{
pArchive = new CArchive(&m_file, CArchive::load);
}
}
}
~CSmartArchive()
{
if (pArchive)
{
pArchive->Close();
m_file.Close();
delete pArchive;
pArchive = NULL;
}
};
template <typename T> void operator + (T & par)
{
if (pArchive)
{
if (m_Mode != CArchive::load)
{
(*pArchive) << par;
}
else
{
try
{
(*pArchive) >> par;
}
catch (...) { /*AfxMessageBox(L"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"); */};
}
}
};
private:
CArchive::Mode m_Mode;
CArchive * pArchive=NULL;
CFile m_file;
};