📄 virtualsavefile.h
字号:
// VirtualSaveFile.h: interface for the CVirtualSaveFile class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_VIRTUALSAVEFILE_H__662458C3_C2CD_4D0C_8C1E_E48D9EBE415A__INCLUDED_)
#define AFX_VIRTUALSAVEFILE_H__662458C3_C2CD_4D0C_8C1E_E48D9EBE415A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef _MCGS_OLEDATETIME_
#ifndef MCGS_WCE_EMU
#define MCGS_MAXDATETIME CTime(9999,1,1,0,0,0).GetTime()
#define MCGS_MINDATETIME CTime(1900,1,1,0,0,0).GetTime()
#else
#define MCGS_MAXDATETIME CTime(2038,1,1,0,0,0).GetTime()
#define MCGS_MINDATETIME CTime(1970,2,1,0,0,0).GetTime()
#endif
#else
#define MCGS_MAXDATETIME COleDateTime(9999,1,1,0,0,0)
#define MCGS_MINDATETIME COleDateTime(1900,1,1,0,0,0)
#endif
#include "OwnerArchive.h" //硫化文件
//定义一个数据对象信息
typedef struct DATAOBJECTINFO
{
CString m_name; //名称
int m_type; //类型
DATAOBJECTINFO()
{
m_type = 1; //数值型
}
}DATAOBJECTINFO, *LPDATAOBJECTINFO;
typedef CArray<DATAOBJECTINFO, DATAOBJECTINFO> DATAOBJSINFO;
class CVirtualSaveFile;
class CVirtualSaveFileBlock
{
private:
bool m_bLoad;
static DWORD m_dwAllocSize;
BYTEARRAY m_buff;
CVirtualSaveFile *m_pSaveFile;
DWORD m_dwFilePos;
//lzlzlz
MCGSDATETIME m_timeStart;
MCGSDATETIME m_timeEnd;
long m_lSingleBlockSize ;
CString m_strGroupName;
void mfReadRecord( BYTEARRAY& buffSrc, long& lngPos, BYTEARRAY& buffDest );
//bool mfGetFieldBuff ( BYTEARRAY& buffSrc, CArray<CList<COleVariant,COleVariant>*,CList<COleVariant,COleVariant>*>& listValueBuffer, STRINGARRAY& arrayStrFilter);
//lzlzlz
bool mfGetFieldBuff ( BYTEARRAY& buffSrc, CArray<CList<COleVariant,COleVariant>*,CList<COleVariant,COleVariant>*>& listValueBuffer,
STRINGARRAY& arrayStrFilter,
COleDateTime& tBegin,
COleDateTime& tEnd,
COleDateTime& tLast,
time_t& tLast1);
//优化版本
bool mfGetFieldBuffEx ( BYTEARRAY& buffSrc, CArray<CList<COleVariant,COleVariant>*,CList<COleVariant,COleVariant>*>& listValueBuffer,
STRINGARRAY& arrayStrFilter,
COleDateTime& tBegin,
COleDateTime& tEnd,
COleDateTime& tLast,
time_t& tLast1);
int mfInStr( STRINGARRAY& strArray, CString& str );
void mfReleaseGroupVar( BYTEARRAY& buff, CString& strField, COleDateTime& timeReturn );
public:
static CByteArray m_arrayRunCode;
CVirtualSaveFileBlock( DWORD dwFilePos, DWORD dwSize, bool bLoad = true,
CVirtualSaveFile* pSaveFile = NULL,
MCGSDATETIME timeStart = MCGS_MAXDATETIME,
MCGSDATETIME timeEnd = MCGS_MINDATETIME);
// COleDateTime timeStart = COleDateTime(9999, 1, 1, 0, 0, 0),
// COleDateTime timeEnd = COleDateTime(1900, 1, 1, 0, 0, 0) );
//CVirtualSaveFileBlock( DWORD dwFilePos, DWORD dwSize, CVirtualSaveFile* pSaveFile = NULL, COleDateTime timeStart = COleDateTime(1900, 1, 1, 0, 0, 0), COledDateTime timeEnd = COleDateTime(1900, 1, 1, 0, 0, 0) );
virtual ~CVirtualSaveFileBlock();
static DWORD SvrGetAllocSaveBlockSize();
COleDateTime SvrGetStartTime(){return COleDateTime(m_timeStart);};
COleDateTime SvrGetEndTime(){return COleDateTime(m_timeEnd);};
FILE_ERROR SvrNetDBReadData( COleDateTime& time, long& lngRecNum, BYTEARRAY& buff );
FILE_ERROR SvrAppendRecord( MCGSDATETIME& time, BYTEARRAY& buff );
FILE_ERROR SvrFreshToDisk( );
FILE_ERROR SvrLoadBlock();
FILE_ERROR SvrUnloadBlock();
long SvrGetBlock( CString strGroupName, STRINGARRAY& arrayFieldNames,
COleDateTime& tBegin,
COleDateTime& tEnd,
CArray<CList<COleVariant,COleVariant>*,CList<COleVariant,COleVariant>*>& listValueBuffer
);
//penghong add 得到此文件块数据的大小
int SvrGetSize()
{
return m_buff.GetSize();
};
//penghong add
};
//lzlzlz
class CVirtualInfoFile;
class CVirtualSaveFile
{
private:
void mfCheckLoad();
bool m_bOpen;
bool m_bLoadFile;
DWORD m_dwFilePos;
public:
CString m_strFileName;
CFile m_file;
//lzlzlz
MCGSDATETIME m_timeStart;
MCGSDATETIME m_timeEnd;
CVirtualSaveFileBlock *m_pCurSaveBlock;
CArray<CVirtualSaveFileBlock*,CVirtualSaveFileBlock*> m_arraySaveBlock;
//lzlzlz
CVirtualInfoFile* m_pInfoFile; //后向指针
public:
CVirtualSaveFile( CString strFileName, MCGSDATETIME timeStart, MCGSDATETIME timeEnd );
virtual ~CVirtualSaveFile();
static DWORD SvrGetSaveBlockNum();
DWORD SvrGetBlockSize();
//lzlzlz
MCGSDATETIME SvrGetStartTime()
{
return m_timeStart;
};
MCGSDATETIME SvrGetEndTime()
{
return m_timeEnd;
};
FILE_ERROR SvrReadBlock( DWORD dwPos, BYTEARRAY& buff);
long SvrGetSaveFile( CString strGroupName,
STRINGARRAY& arrayFieldNames,
COleDateTime& tBegin,
COleDateTime& tEnd,
CArray<CList<COleVariant,COleVariant>*,CList<COleVariant,COleVariant>*>& listValueBuffer
);
FILE_ERROR SvrQueryLastSaveTime( COleDateTime& time );
FILE_ERROR SvrNetDBReadData( COleDateTime& time, long& lngRecNum, BYTEARRAY& buff );
//lzlzlz
FILE_ERROR SvrAppendRecord( MCGSDATETIME& time, BYTEARRAY& buff );
FILE_ERROR SvrFreshToDisk( );
FILE_ERROR SvrFreshToDisk( DWORD dwFilePos, BYTEARRAY& buff );
FILE_ERROR SvrLoadSaveBlock( bool bCurSaveFile = false ,BOOL bLoadFromExistFile = FALSE);//从文件中装载BLOCK指针,没有装入内容
BOOL SvrUnloadBlocks ( );//将所有的BLOCK内容清空,指针没有清,所以与上面函数不对称
BOOL SvrOpenFile();
BOOL SvrCloseFile();
BOOL SvrDelFile( );
CString SvrGetFileName() {return m_strFileName;};
//lzlzlz
CVirtualSaveFileBlock* SvrCreateNewSaveBlock( DWORD dwPos, DWORD dwAllocSize, bool bLoad = true,
MCGSDATETIME timeBegin = MCGS_MAXDATETIME, MCGSDATETIME timeEnd = MCGS_MINDATETIME);
//COleDateTime timeBegin = COleDateTime(9999, 1, 1, 0, 0, 0), COleDateTime timeEnd = COleDateTime(1900, 1, 1, 0, 0, 0) );
// INTARRAY& SvrGetGrpObjIDs();
DATAOBJSINFO& SvrGetGrpObjsInfo();
friend class CVirtualSaveFileBlock;
long m_lSingleFileSize;
long m_dwAllocSize;
long m_lSingleBlockSize;
};
#endif // !defined(AFX_VIRTUALSAVEFILE_H__662458C3_C2CD_4D0C_8C1E_E48D9EBE415A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -