亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? maprecordset.cpp

?? 公交查詢 公交查詢 公交查詢 公交查詢 公交查詢 公交查詢 公交查詢
?? CPP
字號(hào):
#include "stdafx.h"
#include "global.h"
#include "MapField.h"
#include "MapFields.h"
#include "MapTableDesc.h"
#include "MapRecordSet.h"



CMapRecordSet::CMapRecordSet()
{

	m_CacheSize = 50;
	bBOF = FALSE;
	bEOF = FALSE;
	m_bDbfOpen = FALSE;
	iCursorPos = -1;
}

CMapRecordSet::~CMapRecordSet()
{

	Clear();
}

long CMapRecordSet::GetRecordCount()
{

	return m_Header.no_recs; 
}

CMapFields* CMapRecordSet::GetFields(long lIndex)
{
	long lCount;
    CMapFields *fields = NULL;
	CMapFields *pFields;
	lCount = m_Fields.GetSize() - 1; 
    if ( lIndex < 0 || lIndex > lCount )
		return fields;
	pFields = m_Fields.GetAt(lIndex);
	return pFields;
}

CMapTableDesc* CMapRecordSet::GetTableDesc()
{

	return &m_TableDesc;
}

BOOL CMapRecordSet::GetBOF()
{
	return bBOF; 

}

BOOL CMapRecordSet::GetEOF()
{
	return bEOF;

}

int  CMapRecordSet::GetCacheSize()
{
	return m_CacheSize;

}

BOOL CMapRecordSet::SetCacheSize(int& CacheSize)
{
	if ( CacheSize < 0 || CacheSize > MAX_CACH_SIZE )
		return FALSE;
	return TRUE;
}

/*************************************************
  描述:         打開(kāi)DBF文件
  輸入:         文件名
  輸出:        成功返回TRUE 失敗返回FALSE
*************************************************/
BOOL CMapRecordSet::openDBF(CString& csFileName)
{
	unsigned int  iTemp;
	unsigned long ulReocrdCount;
	unsigned short ulLength,ulRecLength;
	short i,sFieldCount;
	char*  pszBuffer;
	FIELD_ELEMENT *pField,*pOldField;
    CFileException fe;

	//打開(kāi)主文件
	if ( !fDbf.Open(csFileName, CFile::modeRead|CFile::shareDenyWrite,&fe))
		return FALSE;
	m_bDbfOpen = TRUE;
	fDbf.Seek(0L, CFile::begin);
	//讀入文件頭 
	if ( fDbf.Read(&m_Header,sizeof(m_Header)) != sizeof(m_Header))
    	return FALSE;
	ulReocrdCount = m_Header.no_recs; 
	ulLength = m_Header.head_len;
    ulRecLength = m_Header.rec_len; 
   
	//計(jì)算字段個(gè)數(shù)
	sFieldCount = (ulLength - sizeof(DBF_HEADER)-1)/sizeof(FIELD_ELEMENT);
	iTemp = sFieldCount * sizeof(FIELD_ELEMENT) + 1;
	pszBuffer = new char[iTemp];
	if ( pszBuffer == NULL )
		return FALSE;
    //讀入字段描述部分?jǐn)?shù)據(jù)(表結(jié)構(gòu))
	if ( fDbf.Read(pszBuffer,iTemp) != iTemp)
    {     
    	delete []pszBuffer;
		return FALSE;
	}	
	for ( i = 0 ; i < sFieldCount ; i++ )
	{
		pField = new FIELD_ELEMENT;
		if ( pField == NULL )
		{
			delete []pszBuffer;
		    m_TableDesc.Clear();     
			return FALSE; 
        } 

		memcpy(pField,pszBuffer+i*sizeof(FIELD_ELEMENT),sizeof(FIELD_ELEMENT));
		if ( i == 0 )
        	pField->ulOffset = 0;
        else
			pField->ulOffset = pOldField->ulOffset + pOldField->ucFieldLength; 
		
		//判斷字段類型
		if ( pField->cFieldType != 'N' && pField->cFieldType != 'F' )
        {   
			pField->ucFieldLength += pField->ucFieldDecimal*256; 
            pField->ucFieldDecimal = 0;           
		}
		pOldField = pField;   
       	m_TableDesc.Add(pField); 
		
    }   
    //讀入記錄到記錄集緩沖區(qū)
    ReadRecord(0); 
    
	delete []pszBuffer;
	return TRUE;

}

/*************************************************
  描述:         讀入數(shù)據(jù)記錄 
  輸入:         記錄的索引(從0開(kāi)始)
  輸出:        無(wú)
*************************************************/

void CMapRecordSet::ReadRecord(unsigned long lRecordID)
{
	int	   j,iRecordOffset;
	char   *pszBuffer;
	char   szBuff[255];
	double dbValue;
	FIELD_ELEMENT *pField;
	CMapField *pMapField;
	CMapFields *pMapFields;

	VARIANT varValue;

	if( lRecordID < 0 || lRecordID >= m_Header.no_recs)
        return; //無(wú)效的索引值

    if ( iCursorPos != lRecordID) //要讀取的記錄未在緩存中
    {
		//計(jì)算記錄相對(duì)文件頭的偏移量
		iRecordOffset = lRecordID*m_Header.rec_len + m_Header.head_len;
		pszBuffer = new char[ m_Header.rec_len];
        fDbf.Seek(iRecordOffset , CFile::begin);   
		if ( fDbf.Read(pszBuffer,m_Header.rec_len) != m_Header.rec_len)
		{     
    		delete []pszBuffer;
			return ;
		}	
        
	    Clear();
		pMapFields = new CMapFields(); 
		for ( j = 0 ; j < m_TableDesc.GetFieldCount() ; j++)
		{	
			pMapField = new CMapField;
			pField = m_TableDesc.GetDesc(j); 
			pMapField->SetName( pField->szFieldName );
			pMapField->SetType(pField->cFieldType);
			memset(szBuff , 0 , 255);
			//略過(guò)該記錄是否刪除標(biāo)記字節(jié)pszBuffer+1
			strncpy(szBuff, pszBuffer+1+pField->ulOffset , pField->ucFieldLength);
			if ( pField->cFieldType == 'N' || pField->cFieldType == 'F' )
			{
				::VariantInit(&varValue);
				dbValue = atof(szBuff );
				if ( pField->ucFieldDecimal == 0 )
				{   
					varValue.bVal = VT_I4;   
					varValue.lVal = (int)dbValue;
					pMapField->SetType(fdInteger);
				}
				else
				{
					varValue.bVal = VT_R8;
					varValue.dblVal = dbValue;
					pMapField->SetType(fdDouble);
		   		}	
				pMapField->SetValue(varValue);
			}
			else if ( pField->cFieldType == 'C' )
			{
				pMapField->SetValueAsString(szBuff);
				pMapField->SetType(fdString);
			}
			else
				pMapField->SetType(fdInvaild);
			pMapFields->Add(pMapField);  
             
		}
		Clear(); //清空緩沖區(qū)加入新記錄
		m_Fields.Add(pMapFields);
		delete []pszBuffer;
		iCursorPos = lRecordID;
	}
	

	
	
	
}
/*************************************************
  描述:         移動(dòng)到記錄集頭部
  輸入:         無(wú)
  輸出:        無(wú)
*************************************************/
void CMapRecordSet::MoveFirst()
{
	 if ( !m_bDbfOpen ) //數(shù)據(jù)庫(kù)文件未打開(kāi)
		 return;
	 bBOF = TRUE;
	 bEOF = FALSE;
	 iCursorPos = -1;
	 ReadRecord(0);
	  
}

/*************************************************
  描述:         移動(dòng)到記錄集尾部
  輸入:         無(wú)
  輸出:        無(wú)
*************************************************/
void CMapRecordSet::MoveLast()
{
     if ( !m_bDbfOpen ) 
		 return;
	 bEOF = TRUE;
	 ReadRecord(m_Header.no_recs - 1);  
}

/*************************************************
  描述:         移動(dòng)到下一條記錄
  輸入:         無(wú)
  輸出:        無(wú)
*************************************************/

void CMapRecordSet::MoveNext()
{
	
	 if ( !m_bDbfOpen ) 
		 return;
	 
	 if ( m_Header.no_recs == 1 )
     {
		 bBOF = TRUE;
		 bEOF = TRUE;
		 return;

     }   
	 if ( iCursorPos < m_Header.no_recs-1)
     {
		 bBOF = FALSE;
		 ReadRecord(iCursorPos + 1);

     } 
	 else
        bEOF = TRUE; 

}

/*************************************************
  描述:         移動(dòng)到上一條記錄
  輸入:         無(wú)
  輸出:        無(wú)
*************************************************/
void CMapRecordSet::MovePrev()
{
	if ( !m_bDbfOpen ) //數(shù)據(jù)庫(kù)文件未打開(kāi)
		 return;
	 
	if ( m_Header.no_recs == 1 )
    {
		 bBOF = TRUE;
		 bEOF = TRUE;
		 return;

    }   
	if ( iCursorPos > 0 )
    {
		 bEOF = FALSE;
		 ReadRecord(iCursorPos - 1);

	} 
	else
        bBOF = TRUE; 


}
/*************************************************
  描述:         移動(dòng)iNumRecords條記錄
  輸入:         移動(dòng)的記錄數(shù)、移動(dòng)相對(duì)位置
  輸出:        無(wú)
*************************************************/

BOOL CMapRecordSet::Move(int iNumRecords , RECORDSTART Start )
{
	int iPos;
	/*if ( bEOF && iNumRecords > 0 ) //已經(jīng)到記錄集末尾
		return FALSE;
	if ( bBOF && iNumRecords < 0 ) //已經(jīng)到記錄集頭
		return FALSE;
	if ( iNumRecords == 0 )
		return TRUE;*/

	switch ( Start )
    {
		case BookmarkCurrent:
			iPos = iCursorPos; 
			break;
        case BookmarkLast:
			iPos = m_Header.no_recs - 1;
			break;
        default: // BookmarkFirst
			iPos = 0; 
			break;
	}

	if ( iNumRecords > 0 ) //向后移動(dòng)
    {
		if ( m_Header.no_recs <= (unsigned long)(iPos + iNumRecords))
			return FALSE;
		else
        {
			ReadRecord(iPos + iNumRecords);
			return TRUE;
		}	
	}	
	else
    {
	    if (  (iPos + iNumRecords) < 0 )
			return FALSE;
		else
        {
			ReadRecord(iPos + iNumRecords);
			return TRUE;
		}	
    }
}
/*************************************************
  描述:         清空記錄緩沖區(qū)
  輸入:         無(wú)
  輸出:        無(wú)
*************************************************/
void CMapRecordSet::Clear()
{
	int i;
	CMapFields *pMapFields;

	for ( i = m_Fields.GetSize() - 1 ; i >=0  ; i-- )
	{	
		pMapFields = m_Fields.GetAt(i);
		delete pMapFields;
	}
	m_Fields.RemoveAll(); 
	
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人做人人爽| 亚洲精选一二三| 日韩美女精品在线| 亚洲观看高清完整版在线观看| 91精品国产综合久久福利软件| 日韩三级电影网址| 欧美激情一区二区三区四区| 亚洲一区二区三区四区五区中文| 美腿丝袜一区二区三区| 丁香桃色午夜亚洲一区二区三区| 91看片淫黄大片一级在线观看| 91精品国产综合久久精品麻豆| 亚洲国产成人午夜在线一区| 午夜亚洲福利老司机| 国内精品嫩模私拍在线| 91首页免费视频| 亚洲精品一区二区三区99| 亚洲美女一区二区三区| 狠狠色狠狠色综合| 在线一区二区观看| 久久婷婷国产综合国色天香| 亚洲一线二线三线视频| 国产一区二区日韩精品| 欧美午夜精品电影| 国产精品无码永久免费888| 日韩av在线播放中文字幕| k8久久久一区二区三区| 日韩欧美你懂的| 一区二区三区日韩欧美| 成人中文字幕在线| 欧美一级淫片007| 亚洲一区二区三区在线| 岛国精品一区二区| 欧美www视频| 日日噜噜夜夜狠狠视频欧美人 | 91麻豆精品91久久久久同性| 国产精品久久久久久久久快鸭| 麻豆久久久久久| 欧美日韩二区三区| 亚洲男帅同性gay1069| 国产成人综合精品三级| 欧美xxxxxxxx| 欧美一区二区黄色| 亚洲精品日韩综合观看成人91| 国产精品亚洲午夜一区二区三区| 制服.丝袜.亚洲.中文.综合| 亚洲黄色小说网站| a级精品国产片在线观看| 国产亚洲女人久久久久毛片| 日本成人在线视频网站| 欧美肥妇bbw| 亚洲在线观看免费视频| 91在线观看视频| 中文字幕一区二区三区在线不卡| 国产福利精品一区| 337p粉嫩大胆色噜噜噜噜亚洲| 男男视频亚洲欧美| 这里只有精品免费| 亚洲成年人影院| 欧美日韩国产影片| 亚洲一区在线观看免费观看电影高清 | 成人h动漫精品| 久久精品在这里| 国产成人自拍网| 欧美激情一区二区三区不卡| 国产成人免费av在线| 精品国产乱码久久久久久1区2区 | 日韩视频免费直播| 视频一区中文字幕| 91精品国产综合久久久久久| 日韩黄色一级片| 日韩色视频在线观看| 免费黄网站欧美| 精品动漫一区二区三区在线观看| 久久精品国产精品亚洲精品| 欧美精品一区二区在线观看| 精品一区二区三区在线观看国产 | 国产成a人亚洲精| 国产精品美女久久久久久久久久久 | 555夜色666亚洲国产免| 午夜私人影院久久久久| 欧美日本一道本在线视频| 日本午夜一本久久久综合| 日韩亚洲国产中文字幕欧美| 国内久久精品视频| 中文字幕第一区| 色婷婷久久久综合中文字幕| 亚洲sss视频在线视频| 欧美一级专区免费大片| 国产精品自产自拍| 国产精品久久毛片| 91黄色免费版| 免费看日韩精品| 久久久国产午夜精品 | 亚洲线精品一区二区三区八戒| 欧美午夜精品久久久久久超碰| 日韩高清在线不卡| 久久综合九色综合97_久久久| 高清在线不卡av| 一区二区三区91| 日韩欧美一区在线| 国产**成人网毛片九色 | 日本高清成人免费播放| 亚洲高清中文字幕| 欧美电影免费观看完整版| 国产一区二区三区四区在线观看| 国产清纯白嫩初高生在线观看91 | 亚洲免费观看在线视频| 欧美日韩国产片| 狠狠网亚洲精品| 亚洲日本中文字幕区| 91超碰这里只有精品国产| 国产精品白丝jk黑袜喷水| 亚洲精品午夜久久久| 欧美一区二区免费| 不卡区在线中文字幕| 天天操天天色综合| 国产视频视频一区| 欧美日韩国产美女| 成人午夜在线视频| 五月激情六月综合| 欧美激情在线看| 91精品免费观看| 成人精品视频一区| 肉丝袜脚交视频一区二区| 中文字幕免费不卡| 欧美日韩国产不卡| 成人av网在线| 麻豆精品一区二区综合av| 亚洲欧美激情视频在线观看一区二区三区 | 中文字幕欧美激情一区| 9191国产精品| 99九九99九九九视频精品| 久久国产免费看| 亚洲欧美日韩国产一区二区三区 | 成人在线综合网| 日韩电影一区二区三区四区| 亚洲天堂免费看| 久久久久高清精品| 欧美一区二视频| 日本福利一区二区| 成人午夜在线免费| 麻豆91免费看| 亚洲综合激情网| 国产精品网站一区| 精品成人免费观看| 这里只有精品免费| 在线观看视频一区二区| 不卡的电影网站| 国产精品一色哟哟哟| 蜜臀av在线播放一区二区三区| 亚洲伦理在线免费看| 国产精品嫩草影院av蜜臀| 精品捆绑美女sm三区| 欧美片在线播放| 日本高清不卡视频| 91性感美女视频| 丁香一区二区三区| 国产一区二区电影| 久久精品99国产国产精| 午夜欧美一区二区三区在线播放| 亚洲人精品午夜| 亚洲丝袜制服诱惑| 国产精品五月天| 中文字幕精品三区| 国产三级精品三级| 久久九九久久九九| 久久人人爽人人爽| 亚洲精品在线免费播放| 日韩亚洲欧美成人一区| 欧美一区二区大片| 67194成人在线观看| 欧美精品久久99| 欧美老年两性高潮| 欧美片在线播放| 欧美一区二区视频观看视频| 欧美丰满少妇xxxxx高潮对白| 欧美欧美欧美欧美| 欧美日韩一区二区三区在线看| 91成人网在线| 在线观看日韩国产| 欧美日韩国产一级| 91精品在线免费| 日韩欧美一区在线观看| 日韩精品一区二区三区四区视频 | 国产另类ts人妖一区二区| 国产又粗又猛又爽又黄91精品| 久久99精品久久久| 国产一区二区电影| 国产成人综合在线播放| 波多野结衣中文字幕一区二区三区 | 日韩欧美黄色影院| 久久久久久夜精品精品免费| 久久综合九色综合97婷婷| 国产日韩欧美精品在线| 国产精品女上位| 伊人色综合久久天天人手人婷| 亚洲第一精品在线| 日本不卡的三区四区五区| 麻豆高清免费国产一区|