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

📄 viewschemafile.cpp

📁 有计算机图形学、图像处理、dbms、sniffer、中游俄罗斯外挂、othello、遗传算法、舌苔分析等程序。
💻 CPP
字号:
// ViewSchemaFile.cpp: implementation of the CViewSchemaFile class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Database.h"
#include "ViewSchemaFile.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CViewSchemaFile::CViewSchemaFile()
{

}
CViewSchemaFile::CViewSchemaFile(int hFile)
{
}
CViewSchemaFile::CViewSchemaFile(LPCTSTR lpszFileName, UINT nOpenFlags,UINT id)
:CFile(lpszFileName, nOpenFlags)
{
	if(GetLength()==0)
	{
		SetLength(2*MAIN_BLOCK);
		ID=id;
		end=MAIN_BLOCK;
		SeekToBegin();
		Write(&ID,sizeof(UINT));
		Write(&end,sizeof(UINT));
	}
	else
	{
		SeekToBegin();
		Read(&ID,sizeof(UINT));
		Read(&end,sizeof(UINT));
	}
}
void CViewSchemaFile::Close()
{
	this->SeekToBegin();
	Write(&ID,sizeof(UINT));
	Write(&end,sizeof(UINT));
	CFile::Close();
}
BOOL CViewSchemaFile::Open(LPCTSTR lpszFilename,UINT nOpenFlags,UINT id)
{
	CFile::Open(lpszFilename,nOpenFlags);
    if(GetLength()==0)
	{
		SetLength(2*MAIN_BLOCK);
		ID=id;
		end=MAIN_BLOCK;
		SeekToBegin();
		Write(&ID,sizeof(UINT));
		Write(&end,sizeof(UINT));
	}
	else
	{
		SeekToBegin();
		Read(&ID,sizeof(UINT));
		Read(&end,sizeof(UINT));
	}
	return TRUE;
}
/***********************************************************************
/*  BYTE		exist;
/*	WORD		length;
/*	BYTE		name_length;
/*	CString		name;
/*	UINT		RelNo1;//所属关系号
/*	UINT		RelNo2;
/*	int			time;//时间戳
/*	UINT		DataFileNo;
/*	PDB			db_addr;
/*	UINT		rcd_len;//辅助
/*	WORD		attr_num;
/************************************************************************
/*  CAttribute	*at;
以上写入文件*************************************************************/
CRelView * CViewSchemaFile::ReadSchema(PDB db_addr)
{
	CAttribute A;
	WORD i;
	BYTE exist;
	UINT offset=UINT(db_addr&0xFFFFFFFF);
    CRelView *view=new CRelView;
	char name[11];//????????????????????????????????
	memset(name,0,10);
	Seek(offset,CFile::begin);
	Read(&exist,sizeof(BYTE));
	if(!exist)
		return NULL;
	Read(&view->length,sizeof(WORD));
	Read(&view->name_length,sizeof(BYTE));
	Read(name,view->name_length);
	view->name=CString(name);
	Read(&view->RelNo1,sizeof(UINT));
	Read(&view->RelNo2,sizeof(UINT));
	Read(&view->time,sizeof(int));
	Read(&view->DataFileNo,sizeof(UINT));
	Read(&view->db_addr,sizeof(PDB));
	Read(&view->rcd_len,sizeof(UINT));
	Read(&view->attr_num,sizeof(WORD));
	
	view->at=new CAttribute[view->attr_num+1];
	for(i=1;i<=view->attr_num;i++)
	{
        Read(&(A.name_length),sizeof(BYTE));
		Read(name,A.name_length);
		A.name=CString(name);
		Read(&(A.type),sizeof(BYTE));
		Read(&A.idx,sizeof(BYTE));
		Read(&A.unq,sizeof(BYTE));
		Read(&(A.rf_relationship),sizeof(UINT));
		Read(&(A.rf_Attribute),sizeof(WORD));
        Read(&(A.length),sizeof(WORD));
		Read(&(A.IndexMainFile),sizeof(UINT));
		Read(&(A.offset),sizeof(UINT));
		view->at[i]=A;
	}

    return view;	
}
PDB CViewSchemaFile::Location(CRelView *view)//定位,定位后长度不可变
{
	ASSERT(view->wtag);
	PDB Ret=(PDB(ID)<<32)+PDB(end);
	
	if((end+view->length) > GetLength())
		SetLength(GetLength()+MAIN_BLOCK);
	
	end+=view->length;
	return Ret;
}
CViewSchemaFile::~CViewSchemaFile()
{
    if (m_hFile != (UINT)hFileNull && m_bCloseOnDelete)
		Close();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -