bool CGoodsBaseProperties::tagAddonPropertyValue::Unserialize(DBReadSet& setReadDB, bool b )
{
	Clear();
	dwId = setReadDB.GetDwordFromByteArray( );
	lBaseValue = setReadDB.GetLongFromByteArray( );
	return true;
}
bool CGoods::tagAddonProperty::Unserialize(DBReadSet& setReadDB, bool b)
{
	gapType					= static_cast<eGoodsAddonProperties>( 
		setReadDB.GetDwordFromByteArray() );
	lValues[0]=setReadDB.GetLongFromByteArray();
	lValues[1]=setReadDB.GetLongFromByteArray();
	return true;
}
BOOL CRoleRecord::DecodeFromDataBlock(DBReadSet& setReadDB)
{
	m_lRoleID=setReadDB.GetLongFromByteArray();
	m_cRoleStep=setReadDB.GetByteFromByteArray();
	m_cAimNum= setReadDB.GetByteFromByteArray();
	setReadDB.GetBufferFromByteArray(m_Param,sizeof(sRoleParam)*m_cAimNum);
	return TRUE;
}
	//!						±àÂë
void MedalContainer::DecodeFromDataBlock(DBReadSet& setReadDB)
{
	m_setHold.clear();
	LONG lNum = setReadDB.GetLongFromByteArray( );
	for (LONG i = 0; i < lNum; ++i)
	{
		m_setHold.insert(setReadDB.GetLongFromByteArray( ));
	}
}
bool CBaseObject::DecordFromDataBlock(DBReadSet& db_r,bool bEx /* = true */)
{
	m_bIsHide = (db_r.GetByteFromByteArray() != 0);
	m_lType = db_r.GetLongFromByteArray();
	db_r.GetBufferFromByteArray(m_guExID);
	/*m_lGraphicsID = */db_r.GetLongFromByteArray();
	db_r.GetStringFromByteArray(m_strName,256);
	return true;
}
// 解码
bool CGate::DecodeFromDataBlock(DBReadSet& setReadDB,bool bExData )
{
	CBuild::DecodeFromDataBlock(setReadDB, bExData);
	char strVal[256];
	setReadDB.GetStringFromByteArray( strVal,256);
	m_strOpenSound=strVal;
	setReadDB.GetStringFromByteArray( strVal,256);
	m_strCloseSound=strVal;
	return true;
}
	/// ´ÓÏûÏ¢½âÂëÅäÖÃ
	void CConfiger::DecodeFromDataBlock(DBReadSet &db )
	{
		m_RightScripts.clear();
		m_WrongScripts.clear();
		db.GetBufferFromByteArray(&m_sys,sizeof(m_sys));

		string RightScriptFile;

		/// ¶ÁÈ¡½±Àø´ëÊ©
		long  RightNum = db.GetLongFromByteArray();
		for (long l=0 ; l<RightNum ; l++)
		{
			int RightScriptKey = db.GetLongFromByteArray();
			CHAR strTemp[256];
			ScriptCfg sc;
			sc.file = db.GetStringFromByteArray(strTemp,256);
			sc.limit = db.GetByteFromByteArray();
			m_RightScripts[RightScriptKey] = sc;
		}

		/// ¶ÁÈ¡³Í·£´ëÊ©
		long  WorongNum = db.GetLongFromByteArray();
		for (long l=0 ; l<WorongNum ; l++)
		{
			int WrongScriptKey = db.GetLongFromByteArray();
			CHAR strTemp[256];
			ScriptCfg sc;
			sc.file = db.GetStringFromByteArray(strTemp,256);
			sc.limit = db.GetByteFromByteArray();
			m_WrongScripts[WrongScriptKey] = sc;
		}

		// ½âÂëÃô¸Ð´ÊÁбí
		DecodeSensWords( db );
	}
Exemple #8
0
// ½±ÀøÐÅÏ¢½âÂë
void tagBounsInfo::DecodeFromDataBlock(DBReadSet& setReadDB)
{
    char strTemp[256];
    setReadDB.GetBufferFromByteArray(guid);
    strAccount	= setReadDB.GetStringFromByteArray(strTemp, 256);
    bStatus		= setReadDB.GetByteFromByteArray();
    dwBounsID	= setReadDB.GetDwordFromByteArray();
//	tValidTime	= setReadDB.GetLongFromByteArray();
    setReadDB.GetBufferFromByteArray((void*)&tValidTime, sizeof(time_t));

}
//! 从数据集解码
BOOL CGameInfo::DeCode(DBReadSet &setReadDB)
{
	m_dwType = setReadDB.GetDwordFromByteArray();
	LONG lSize = setReadDB.GetLongFromByteArray();
	for (LONG i = 0; i < lSize; ++i)
	{
		tagGameInfoData GameInfoData;
		setReadDB.GetBufferFromByteArray(&GameInfoData, sizeof(tagGameInfoData));
	}

	return TRUE;
}
void CMedalMgr::DecodeFromDataBlock(DBReadSet& dbRead)
{
	m_vecMedal.clear();

	long lNum = dbRead.GetLongFromByteArray();

	for(int i=0;i<lNum;i++)
	{
		DWORD dwMedalIndex = dbRead.GetLongFromByteArray();
		m_vecMedal.push_back(dwMedalIndex);
	}
}
Exemple #11
0
bool CMultiHpBar::DecodeFromDataBlock(DBReadSet& setReadDB)
{
    m_BaseMaxHp= setReadDB.GetLongFromByteArray();
    m_listHpBar.clear();
    long size=setReadDB.GetLongFromByteArray();
    for (int i=0; i<size; i++)
    {
        HpBar bar;
        bar.HpRange=setReadDB.GetLongFromByteArray();
        m_listHpBar.push_back(bar);
    }
    return true;
}
bool CMercenaryQuestSys::DecodeFromDataBlock(DBReadSet& setReadDB)
{
	m_MerQuests.clear();
	DisbandQuests.clear();
	m_lCurQuestID = setReadDB.GetLongFromByteArray();

	WORD wSize = setReadDB.GetWordFromByteArray();
	tagMerQuest MerQuest;
	for(WORD i=0;i<wSize;i++)
	{
		long lID = setReadDB.GetLongFromByteArray();
		long time= setReadDB.GetDwordFromByteArray();
		long lSize =  setReadDB.GetWordFromByteArray();
		MerQuest.Quests.clear();
		MerQuest.dwLastUpdateTime=time;
		for(WORD j=0;j<lSize;j++)
		{
			long lID = setReadDB.GetLongFromByteArray();
			MerQuest.Quests.push_back(lID);
		}
		m_MerQuests[lID] = MerQuest;

	}
	wSize=setReadDB.GetWordFromByteArray();
	for ( WORD i=0;i<wSize;i++ )
	{
		long lId = setReadDB.GetLongFromByteArray();
		DisbandQuests.insert(lId);
	}
	return true;
}
BOOL CGoodsBaseProperties::tagSuitProperty::Unserialize(DBReadSet& setReadDB, BOOL b )
{
	Clear();
	gapType					= static_cast<GOODS_ADDON_PROPERTIES>( setReadDB.GetDwordFromByteArray() );
	bActived=FALSE;
	DWORD dwNumAddonPropertyValues = setReadDB.GetDwordFromByteArray(  );
	for( size_t i = 0; i < dwNumAddonPropertyValues; i ++ )
	{
		tagAddonPropertyValue apvAddonPropertyValue;
		apvAddonPropertyValue.Unserialize( setReadDB);
		vValues.push_back( apvAddonPropertyValue );
	}
	return TRUE;
}
bool CGoodsBaseProperties::tagSuitProperty::Unserialize(DBReadSet& setReadDB, bool b )
{
	Clear();
	gapType = static_cast<eGoodsAddonProperties>( setReadDB.GetDwordFromByteArray() );
	bActived = false;
	ulong dwNumAddonPropertyValues = setReadDB.GetDwordFromByteArray();
	for(size_t i = 0; i < dwNumAddonPropertyValues; i++)
	{
		tagAddonPropertyValue apvAddonPropertyValue;
		apvAddonPropertyValue.Unserialize(setReadDB);
		vValues.push_back(apvAddonPropertyValue);
	}
	return true;
}
	void CConfiger::DecodeSensWords( DBReadSet &db )
	{
		m_SensWords.clear();
		long size = db.GetLongFromByteArray();
		char Word[512];
		for( long i = 0; i < size; ++ i )
		{
			db.GetStringFromByteArray( Word, sizeof( Word ) );
			if( std::find( m_SensWords.begin(), m_SensWords.end(), Word ) ==
				m_SensWords.end() )
			{
				m_SensWords.push_back( Word );
			}
		}
	}
	void CQuestionManager::UpdateQuestions( DBReadSet &db )
	{
		ClearQuestions();
		long lCount = db.GetLongFromByteArray();
		m_Questions.reserve( lCount );
		for( long i = 0; i < lCount; ++ i )
		{
			Question ques;
			ques.answer = db.GetByteFromByteArray();
			ques.data.size = (size_t) db.GetLongFromByteArray();
			ques.data.buf = M_ALLOC( sizeof(char)*(ques.data.size) );
			db.GetBufferFromByteArray( ques.data.buf, ques.data.size );

			m_Questions.push_back( ques );
		}
	}
//解码
void CAutoFightData::DecodeFromDataBlock(DBReadSet& setReadDB)
{
    //由于不需要保存稳定挂机和普通挂机的状态,不需要从GS得到,需要是启用
    //setReadDB.GetBufferFromByteArray(m_AutoFightSetup, DATA_SIZE);
    //从GS解码稳定时间
    SetStableTime(setReadDB.GetDwordFromByteArray());
}
	void CPackage::DecodeFromGS( CPlayer *pPlayer, DBReadSet &db )
	{
		BYTE flag = db.GetByteFromByteArray();
		if( flag == 1 )
		{
			if( m_pGoods != NULL )
			{
				CGoodsFactory::GarbageCollect( &m_pGoods );
			}
			m_pGoods = CGoodsFactory::UnserializeGoods( db,35 );		
			m_pContainer->Release();
			m_pContainer->SetContainerVolume( m_pGoods );
			m_pContainer->Unserialize( db );

			Log4c::Trace(ROOT_MODULE,FMT_STR( "Decode package for player [%s] ok", pPlayer->GetName() ) );
		}
		else
		{
			if( m_pGoods != NULL )
			{
				CGoodsFactory::GarbageCollect( &m_pGoods );
			}
			m_pContainer->Release();
		}
	}
BOOL CGoodsBaseProperties::tagAddonProperty::Unserialize(DBReadSet& setReadDB, BOOL b)
{
	// TODO: Add your specialized code here.
	Clear();
	gapType					= static_cast<GOODS_ADDON_PROPERTIES>( setReadDB.GetDwordFromByteArray() );
	bIsEnabled				= setReadDB.GetLongFromByteArray();
	bIsImplicitAttribute	= setReadDB.GetLongFromByteArray();
	DWORD dwNumAddonPropertyValues = setReadDB.GetDwordFromByteArray( );
	for( size_t i = 0; i < dwNumAddonPropertyValues; i ++ )
	{
		tagAddonPropertyValue apvAddonPropertyValue;
		apvAddonPropertyValue.Unserialize(setReadDB);
		vValues.push_back( apvAddonPropertyValue );
	}
	return TRUE;
}
Exemple #20
0
bool CBuild::DecodeFromDataBlock(DBReadSet& setReadDB,bool bExData)
{
	CMoveShape::DecodeFromDataBlock(setReadDB, bExData);
	setReadDB.GetBufferFromByteArray( &m_Property, (long)sizeof(m_Property));

	char strVal[256];
	setReadDB.GetStringFromByteArray( strVal,256);
	strHitSound=strVal;
	setReadDB.GetStringFromByteArray( strVal,256);
	strDestorySound=strVal;

	setReadDB.GetStringFromByteArray( strVal,256);//开门音效
    strOpenSound = strVal;
	setReadDB.GetStringFromByteArray( strVal,256);//关门音效
	strCloseSound = strVal;
	return true;
}
BOOL CRoleQueue::DecodeFromDataBlock(DBReadSet& setReadDB)
{
	Clean();
	m_lChapter=setReadDB.GetLongFromByteArray();
	LONG rolenum= setReadDB.GetLongFromByteArray();

	for (int a=0 ; a<rolenum; a++)
	{
		CRoleRecord* record=new CRoleRecord;
		record->DecodeFromDataBlock(setReadDB);
		if (!AddOneRecord(record))
		{
			delete record;
		}
	}

	LONG lExcRecordNun= setReadDB.GetLongFromByteArray();
	for (int a=0; a< lExcRecordNun; a++)
	{
		sExcessRecord record;
		WORD index= setReadDB.GetShortFromByteArray();
		setReadDB.GetBufferFromByteArray(&record,sizeof(sExcessRecord));
		m_mapExcessRecord[index]= record;
	}

	LONG rolerecordnum=setReadDB.GetLongFromByteArray();

	for (int a=0; a<rolerecordnum; a++)
	{
		LONG _long=setReadDB.GetLongFromByteArray();
		m_setRoleRecord.insert(_long);
	}
	DeleteExcessRecord();
	return TRUE;
}
Exemple #22
0
BOOL CJiFen::Unserialize( DBReadSet& setReadDB, BOOL b )
{	
	CJiFen::Clear();
	BYTE bGoodsAmount = setReadDB.GetByteFromByteArray( );
	if( bGoodsAmount > 0 )
	{
		m_pGoldCoins = CGoodsFactory::UnserializeGoods( setReadDB);
	}
	return TRUE;
}
BOOL CSilverWallet::Unserialize( DBReadSet& setReadDB, BOOL b )
{
	CSilverWallet::Clear();
	BYTE bGoodsAmount = setReadDB.GetByteFromByteArray( );
	if( bGoodsAmount > 0 )
	{
		m_pSilverCoins = CGoodsFactory::UnserializeGoods( setReadDB,15 );
	}
	return TRUE;
}
Exemple #24
0
BOOL CJiFen::Unserialize( DBReadSet& setReadDB, BOOL b )
{	
	Release();
	BYTE bGoodsAmount = setReadDB.GetByteFromByteArray( );
	if( bGoodsAmount > 0 )
	{
#ifdef __MEMORY_LEAK_CHECK__
		CBaseObject::SetConstructFlag(75);
#endif
		m_pGoldCoins = CGoodsFactory::UnserializeGoods( setReadDB);
	}
	return TRUE;
}
void  PhaseSetup::PhaseConfigDecode(DBReadSet& dbRead)
{
    dbRead.GetBufferFromByteArray(&m_config ,sizeof(Config) );
    long size=  dbRead.GetLongFromByteArray();

    PhaseTable  tpTemp;
    for ( long  i = 0 ; i < size ; i ++ )
    {
        long type = dbRead.GetLongFromByteArray();
        long count= dbRead.GetLongFromByteArray();
        tpTemp.clear();
        for ( int j = 0 ; j < count ; j++ )
        {
            long id = dbRead.GetLongFromByteArray();
            char file[512];
            dbRead.GetStringFromByteArray( file , 512 );
            tpTemp.insert( std::pair<long,std::string>( id, file) ) ; 
        }
        m_PhaseTable.insert( std::pair<long,PhaseTable>( type , tpTemp) );
    }

}
Exemple #26
0
// 解码
bool CShape::DecodeFromDataBlock(DBReadSet& setReadDB,bool bExData )
{
	CBaseObject::DecodeFromDataBlock(setReadDB,bExData);
	m_CurRgnType = (eRgnType)setReadDB.GetByteFromByteArray();
	m_lRegionID = setReadDB.GetLongFromByteArray();
	setReadDB.GetBufferFromByteArray(m_RegionID);
	m_fPosX = setReadDB.GetFloatFromByteArray();
	m_fPosY = setReadDB.GetFloatFromByteArray();
	m_lDir = setReadDB.GetLongFromByteArray();
	m_lPos = setReadDB.GetLongFromByteArray();
	m_lPos = 0;
	m_fSpeed = setReadDB.GetFloatFromByteArray();
	m_wState = setReadDB.GetWordFromByteArray();
	m_wAction = setReadDB.GetWordFromByteArray();
	SetSpeed(m_fSpeed);
	return true;
}
void  SkillAttribute::ConfigDecode(DBReadSet& dbRead)
{
     m_MapTable.clear();

     long  SkillNum = dbRead.GetLongFromByteArray();

     for ( int i = 0 ; i < SkillNum ; i++ )
     {
         long Skillid = dbRead.GetLongFromByteArray();
         long LevelNum= dbRead.GetLongFromByteArray();
         for ( int j = 0 ; j < LevelNum ; j++ )
         {
             long lvl = dbRead.GetLongFromByteArray();
             tagSkillAttr  tmpSkillAttr;
             dbRead.GetBufferFromByteArray(&tmpSkillAttr,sizeof(tagSkillAttr) );

             m_SkillAttriTable[ Skillid ][ lvl ] = tmpSkillAttr;
             std::map<string,short>  mp;
             tmpSkillAttr.AddMapTable( mp );

             m_MapTable[ Skillid ][ lvl ] = mp;
         }
     }
}
Exemple #28
0
// ½±ÀøÃèÊö½âÂë
void tagBounsDes::DecodeFromDataBlock(DBReadSet& setReadDB)
{
    char strTemp[256];
    dwBounsID	= setReadDB.GetDwordFromByteArray();
    strTitle	= setReadDB.GetStringFromByteArray(strTemp, 256);
    strDes		= setReadDB.GetStringFromByteArray(strTemp, 256);
    bType		= setReadDB.GetByteFromByteArray();
    strName		= setReadDB.GetStringFromByteArray(strTemp, 256);
    dwValue		= setReadDB.GetDwordFromByteArray();
}
//!									解码
void COrganizingParam::DecodeFromMsgSet(DBReadSet &DbReadSet)
{
	m_LoadSucceed = FALSE;

	//! 工会全局配置
	DbReadSet.GetBufferFromByteArray(&m_tagGlobeSetup, sizeof(tagGlobeSetup));

	//! 帮会相关的等级参数配置
	m_vFacLevelSetup.clear();
	LONG lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacLevelSetup FacLevelSetup;
		FacLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		FacLevelSetup.lMaxMemNum	= DbReadSet.GetLongFromByteArray();
		FacLevelSetup.lDisbandMemNum = DbReadSet.GetLongFromByteArray();
		LONG lConditionSize			= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_vFacLevelSetup.push_back(FacLevelSetup);
	}

	//! 联盟创建条件
	m_vUnionUpgradeCondition.clear();
	LONG lConditionSize = DbReadSet.GetLongFromByteArray();
	for (LONG j = 0; j < lConditionSize; ++j)
	{
		tagUpgradeCondition UpgradeCondition;
		DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
		m_vUnionUpgradeCondition.push_back(UpgradeCondition);
	}

	//! 工会功能开放的等级配置
	DbReadSet.GetBufferFromByteArray(&m_FunctionWithLevel, sizeof(LONG) * MAXNUM_FactionPurview);

	//! 帮会经验奖励等级的配置
	m_vFacExpLevelSetup.clear();
	lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacExpLevelSetup FacExpLevelSetup;
		FacExpLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		FacExpLevelSetup.fBaseExp	= DbReadSet.GetFloatFromByteArray();
		LONG lConditionSize			= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacExpLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_vFacExpLevelSetup.push_back(FacExpLevelSetup);
	}
	//! 帮会专业等级的配置
	m_vFacDepotLevelSetup.clear();
	lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacDepotLevelSetup FacDepotLevelSetup;
		FacDepotLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		FacDepotLevelSetup.lCellNum		= DbReadSet.GetLongFromByteArray();
		LONG lConditionSize				= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacDepotLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_vFacDepotLevelSetup.push_back(FacDepotLevelSetup);
	}
	//! 商业等级配置
	m_MetallurgyLevelSetup.clear();
	lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacSubLevelSetup FacSubLevelSetup;
		FacSubLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		LONG lConditionSize			= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacSubLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_MetallurgyLevelSetup.push_back(FacSubLevelSetup);
	}
	//! 战争等级配置
	m_SmithingLevelSetup.clear();
	lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacSubLevelSetup FacSubLevelSetup;
		FacSubLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		LONG lConditionSize			= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacSubLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_SmithingLevelSetup.push_back(FacSubLevelSetup);
	}
	//! 贵族等级配置
	m_SewingLevelSetup.clear();
	lLevelSize = DbReadSet.GetLongFromByteArray();
	for (LONG i = 0; i < lLevelSize; ++i)
	{
		tagFacSubLevelSetup FacSubLevelSetup;
		FacSubLevelSetup.lLevel		= DbReadSet.GetLongFromByteArray();
		LONG lConditionSize			= DbReadSet.GetLongFromByteArray();
		for (LONG j = 0; j < lConditionSize; ++j)
		{
			tagUpgradeCondition UpgradeCondition;
			DbReadSet.GetBufferFromByteArray(&UpgradeCondition, sizeof(tagUpgradeCondition));
			FacSubLevelSetup.vCondition.push_back(UpgradeCondition);
		}
		m_SewingLevelSetup.push_back(FacSubLevelSetup);
	}
	//家族日常消耗
	m_BaseConsume.clear();
	lLevelSize=DbReadSet.GetLongFromByteArray();
	for (LONG i=0;i<lLevelSize;i++)
	{
		tagBaseConsume tgBase;
		LONG lLevel=DbReadSet.GetLongFromByteArray();
		DbReadSet.GetBufferFromByteArray(&tgBase,sizeof(tagBaseConsume));
		m_BaseConsume[lLevel]=tgBase;
	}
	//商业等级对应的基数
	m_BussinessBase.clear();
	lLevelSize=DbReadSet.GetLongFromByteArray();
	for (LONG i=0;i<lLevelSize;i++)
	{
		LONG lLevel=DbReadSet.GetLongFromByteArray();
		LONG lBaseVal=DbReadSet.GetLongFromByteArray();
		m_BussinessBase[lLevel]=lBaseVal;
	}
	m_LoadSucceed = TRUE;
}
void CMonster::DecordChangePropertyFromDataBlock(DBReadSet& readDB)
{
	CMoveShape::DecordChangePropertyFromDataBlock(readDB);
	WORD lNum = readDB.GetWordFromByteArray();
	WORD pro_type = 0;
	BYTE data_type = 0;
	WORD data_length = 0;
	long data = 0;
	BYTE* byte_Array = NULL;
	WORD* word_Array = NULL;
	DWORD* dword_Array = NULL;
	float* flaot_Array = NULL;
	long*  long_Array = NULL;
	short* short_Array = NULL;
	char*  char_Array = NULL;
	bool*  bool_Array = NULL;

	for (int i = 0;i<lNum;i++)
	{
		pro_type = readDB.GetWordFromByteArray();
		data_type = readDB.GetByteFromByteArray();
		data_length = readDB.GetWordFromByteArray();		
		if (data_length<=0) continue;

		//根据数据类型获取具体的数据值
		switch(data_type)
		{
		case ATTR_DATA_BYTE:
			data = readDB.GetByteFromByteArray();
			break;
		case ATTR_DATA_WORD:
			data = readDB.GetWordFromByteArray();
			break;
		case ATTR_DATA_DWORD:
			data = readDB.GetDwordFromByteArray();
			break;
		case ATTR_DATA_FLOAT:
			data = readDB.GetFloatFromByteArray();
			break;
		case ATTR_DATA_LONG:
			data = readDB.GetLongFromByteArray();
			break;
		case ATTR_DATA_SHORT:
			data = readDB.GetShortFromByteArray();
			break;
		case ATTR_DATA_BOOL:
			data = readDB.GetByteFromByteArray();
			break;
		case ATTR_DATA_BYTEARRAY:
			byte_Array = new BYTE[data_length];
			if (!byte_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				byte_Array[i] = readDB.GetByteFromByteArray();
			}
			break;
		case ATTR_DATA_WORDARRAY:
			word_Array = new WORD[data_length];
			if (!word_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				word_Array[i] = readDB.GetWordFromByteArray();
			}
			break;
		case ATTR_DATA_DWORDARRAY:
			dword_Array = new DWORD[data_length];
			if (!dword_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				dword_Array[i] = readDB.GetDwordFromByteArray();
			}
			break;
		case ATTR_DATA_FLOATARRAY:
			flaot_Array = new float[data_length];
			if (!flaot_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				flaot_Array[i] = readDB.GetFloatFromByteArray();
			}
			break;
		case ATTR_DATA_LONGARRAY:
			long_Array = new long[data_length];
			if (!long_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				long_Array[i] = readDB.GetLongFromByteArray();
			}
			break;
		case ATTR_DATA_SHORTARRAY:
			short_Array = new short[data_length];
			if (!short_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				short_Array[i] = readDB.GetShortFromByteArray();
			}
			break;
		case ATTR_DATA_CHARARRAY:
			char_Array = new char[data_length];
			if (!char_Array) return;
			readDB.GetStringFromByteArray( char_Array,data_length);
			break;
		case ATTR_DATA_BOOLARRAY:
			bool_Array = new bool[data_length];
			if (!bool_Array) return;
			for (int i = 0;i<data_length;i++)
			{
				data = readDB.GetByteFromByteArray();
				if (data!=0)
				{
					bool_Array[i] = true;
				}else
					bool_Array[i] = false;
			}
			break;
		default:
			break;
		}

		//设置相应属性值
		// 		itProETN it = m_PropertyEnumToName.find(pro_type);
		// 		if(it != m_PropertyEnumToName.end())
		// 		{
		// 			SetProperty( (*it).second.c_str(),data);
		// 		}

		SAFE_DELETE_ARRAY(byte_Array);
		SAFE_DELETE_ARRAY(word_Array);
		SAFE_DELETE_ARRAY(dword_Array);
		SAFE_DELETE_ARRAY(flaot_Array);
		SAFE_DELETE_ARRAY(long_Array);
		SAFE_DELETE_ARRAY(short_Array);
		SAFE_DELETE_ARRAY(char_Array);
		SAFE_DELETE_ARRAY(bool_Array);
	}
}