⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 virtualsavefile.h

📁 mcgs的数据导出源代码
💻 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 + -