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

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

?? maprecordset.cpp

?? windows mobile gis system
?? 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;
}

/*************************************************
  描述:         打開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;

	//打開主文件
	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開始)
  輸出:        無(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( CString(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(CString(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ù)文件未打開
		 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ù)文件未打開
		 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一区二区三区免费野_久草精品视频
在线观看网站黄不卡| 日本欧美一区二区| 99久久国产综合精品色伊| 亚洲国产成人一区二区三区| 国产 欧美在线| 婷婷综合另类小说色区| 欧美丝袜丝交足nylons图片| 午夜影院在线观看欧美| 日韩一区二区免费视频| 狠狠色丁香久久婷婷综| 国产欧美日韩不卡免费| 成人精品电影在线观看| 亚洲精选免费视频| 欧美精品一卡二卡| 国内国产精品久久| 国产精品九色蝌蚪自拍| 91极品美女在线| 日韩av在线免费观看不卡| 久久久国际精品| 在线一区二区三区做爰视频网站| 天涯成人国产亚洲精品一区av| 日韩欧美一区在线| www.欧美色图| 首页亚洲欧美制服丝腿| 久久久久久一级片| 色94色欧美sute亚洲13| 久久精品国内一区二区三区 | 欧美日韩精品一区二区在线播放| 日日摸夜夜添夜夜添精品视频| 欧美精品一区视频| 一本到高清视频免费精品| 麻豆国产精品官网| 中文字幕中文字幕一区二区| 欧美乱熟臀69xxxxxx| 国产91露脸合集magnet| 亚洲成va人在线观看| 久久精品一级爱片| 欧美日韩国产片| 风间由美一区二区av101| 亚洲成人动漫在线观看| 日本一区二区高清| 日韩欧美的一区| 色综合色综合色综合| 精品一区二区三区免费播放| 中文字幕一区二区三区乱码在线| 91精品国产欧美日韩| 色综合一区二区三区| 国精产品一区一区三区mba桃花| 亚洲免费观看高清| 久久精品一级爱片| 日韩欧美国产一区二区三区| 欧美中文字幕一二三区视频| 国产成人亚洲综合a∨猫咪| 美女视频黄a大片欧美| 亚洲图片欧美色图| 一区二区三区在线影院| 国产精品理论片| 国产日韩欧美不卡在线| 欧美成人猛片aaaaaaa| 欧美日韩一区二区电影| 91麻豆国产福利精品| 国产成人一级电影| 激情久久久久久久久久久久久久久久| 亚洲免费在线观看视频| 中文字幕中文字幕在线一区 | 国产一区二区三区在线看麻豆| 亚洲第一在线综合网站| 夜夜精品视频一区二区| 日韩专区欧美专区| 一区二区成人在线视频| 亚洲柠檬福利资源导航| 国产精品欧美极品| 中文文精品字幕一区二区| 国产午夜精品理论片a级大结局 | 亚洲影视在线播放| 欧美日韩亚洲综合| 五月天精品一区二区三区| 国产亲近乱来精品视频| 欧美日韩一二三区| 国产在线乱码一区二区三区| 亚洲美女淫视频| 欧美一级欧美一级在线播放| 国产成人午夜99999| 国产一二三精品| 国产精品一区二区在线观看不卡 | 91国在线观看| 在线中文字幕一区| 欧美日韩久久久一区| 69av一区二区三区| 欧美一区二区成人| 精品久久久久一区| 亚洲国产成人一区二区三区| 中文字幕一区二区三区色视频 | 欧美日韩中文国产| 欧美疯狂性受xxxxx喷水图片| 欧美绝品在线观看成人午夜影视| 欧美日韩国产乱码电影| 日韩欧美高清dvd碟片| 亚洲精品一区二区三区在线观看| 久久久久99精品一区| 亚洲少妇30p| 天天综合日日夜夜精品| 捆绑调教美女网站视频一区| 国产精品夜夜嗨| 91丝袜美腿高跟国产极品老师 | 欧美一区日本一区韩国一区| 欧美v国产在线一区二区三区| 亚洲三级在线看| 一区二区欧美视频| 美女脱光内衣内裤视频久久影院| 国产主播一区二区| 色综合天天综合给合国产| 9191国产精品| 欧美经典一区二区| 玉足女爽爽91| 狠狠色丁香久久婷婷综合丁香| 99久久99久久免费精品蜜臀| 欧美老肥妇做.爰bbww视频| 久久综合色8888| 亚洲黄色免费网站| 久久er99精品| 91国偷自产一区二区三区成为亚洲经典 | 国产91在线|亚洲| 91福利资源站| 久久久三级国产网站| 亚洲久草在线视频| 精品一区二区影视| 色综合久久久久综合体| 日韩女优电影在线观看| 成人欧美一区二区三区视频网页| 日本伊人午夜精品| 91丨九色丨尤物| 欧美xxxx老人做受| 亚洲一二三专区| 成人三级伦理片| 日韩一卡二卡三卡四卡| 亚洲精品视频一区二区| 精品一区二区国语对白| 欧美视频一区二区| 国产精品高潮呻吟久久| 久国产精品韩国三级视频| 在线视频亚洲一区| 国产精品不卡一区| 国产精品系列在线观看| 日韩精品在线网站| 亚洲成a人片综合在线| 波多野结衣一区二区三区 | 一本久久综合亚洲鲁鲁五月天| 久久婷婷成人综合色| 免费观看30秒视频久久| 在线观看日韩高清av| 亚洲欧洲成人自拍| 大陆成人av片| 久久综合九色综合欧美98 | 亚洲综合区在线| 91色婷婷久久久久合中文| 欧美激情在线观看视频免费| 久久99国产乱子伦精品免费| 91麻豆精品国产91久久久久久久久 | 国产一区二区三区av电影| 欧美老肥妇做.爰bbww视频| 一区二区三区视频在线看| 99久久精品国产网站| 国产精品久久久久久户外露出 | 黄页视频在线91| 欧美成人一级视频| 久久精品国产99| 精品99一区二区| 国产乱理伦片在线观看夜一区 | 中文字幕不卡在线观看| 国产成人aaa| 国产精品剧情在线亚洲| av激情亚洲男人天堂| 亚洲欧洲av在线| 日本道免费精品一区二区三区| 亚洲免费av观看| 欧美午夜精品一区二区蜜桃 | 亚洲精品视频一区| 日本精品视频一区二区| 亚洲激情自拍偷拍| 欧美日韩日本视频| 日韩 欧美一区二区三区| 91麻豆精品国产综合久久久久久| 免费人成黄页网站在线一区二区 | 久久久蜜桃精品| 国产999精品久久久久久绿帽| 国产精品色婷婷| 成人国产免费视频| 亚洲人成网站色在线观看| 欧美亚洲图片小说| 另类综合日韩欧美亚洲| 国产欧美一区二区三区沐欲| 99精品热视频| 午夜电影一区二区三区| 久久综合色综合88| 91视频国产观看| 奇米影视在线99精品| 国产区在线观看成人精品| av亚洲精华国产精华精| 性欧美疯狂xxxxbbbb|