本文整理汇总了C++中CEntityProperty::GetBufSize方法的典型用法代码示例。如果您正苦于以下问题:C++ CEntityProperty::GetBufSize方法的具体用法?C++ CEntityProperty::GetBufSize怎么用?C++ CEntityProperty::GetBufSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CEntityProperty
的用法示例。
在下文中一共展示了CEntityProperty::GetBufSize方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SaveBufferField
//存Buffer
bool CRsDupRgn::SaveBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
if(pGoods == NULL) return false;
if(szFiledName == NULL) return false;
VARIANT varBLOB;
SAFEARRAY* psa;
CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
if(NULL == ep) return false;
BYTE* buffer = NULL;
long dataSize = ep->GetBufSize(0);
if(dataSize)
{
buffer = new BYTE[dataSize];
ep->GetBufAttr(0, (void*)buffer, dataSize);
long lSize=(long)dataSize;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound=0;
rgsabound[0].cElements=lSize;
psa=SafeArrayCreate(VT_UI1,1,rgsabound);
for(long i=0;i<lSize;i++)
{
SafeArrayPutElement(psa,&i,&buffer[i]);
}
varBLOB.vt=VT_ARRAY|VT_UI1;
varBLOB.parray=psa;
try
{
rs->GetFields()->GetItem(szFiledName)->AppendChunk(varBLOB);
}
catch(_com_error e)
{
PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN, STR_DBS_DUPRGN_SAVERGNOBJFAIL), e);
SAFE_DELETE_ARRAY(buffer);
return false;
}
SafeArrayDestroy(psa);
}
SAFE_DELETE_ARRAY(buffer);
return true;
}
示例2: AddEntityDataToMsg
void CDBPlayer::AddEntityDataToMsg(DB_OPERATION_TYPE opType, vector<BYTE>& pBA)
{
// 传递来的消息前面已经加入了
// OPEntityID: 4byte, 操作实体的ID值
// DBOP Type: 1byte, 数据库操作类型(枚举值)
// MSG ID: 4byte, 该消息的MSGID
// Entity Num: 2byte, 该实体个数
WORD attrNum = m_mapDirtyAttrData.size();
_AddToByteArray(&pBA, m_GUID); // 实体ID
_AddToByteArray(&pBA, (WORD)attrNum); // 属性种类个数
//--新格式
//变量名字符串长度(long)
//变量名字符串
//变量类型(long)
//变量数据长度(long)
//变量数据
set<string>::iterator itr = m_mapDirtyAttrData.begin();
for(; itr != m_mapDirtyAttrData.end(); itr++)
{
CEntityProperty* ep = GetDataEntityManager().GetEntityProperty(*itr);
if(ep)
{
_AddToByteArray(&pBA, (long)(*itr).size());//变量名字符串长度(long)
_AddToByteArray(&pBA, (*itr).c_str());//变量名字符串
_AddToByteArray(&pBA, (long)ep->GetDataType());//变量类型(long)
_AddToByteArray(&pBA, (long)ep->GetBufSize(0));//变量数据长度(long)
switch(ep->GetDataType())
{
case DATA_OBJECT_TIME:
{
// 6个long值 : 年 月 日 时 分 秒
BYTE timeValue[6*sizeof(DWORD)];
memset(timeValue, 0, 6*sizeof(DWORD));
ep->GetBufAttr(0, (void*)timeValue, 6*sizeof(DWORD));
_AddToByteArray(&pBA, timeValue, 6*sizeof(DWORD));
}
break;
case DATA_OBJECT_STRING:
{
_AddToByteArray(&pBA, ep->GetStringAttr(0));//变量数据
}
break;
case DATA_OBJECT_FLOAT:
case DATA_OBJECT_LONG:
case DATA_OBJECT_SHORT:
case DATA_OBJECT_ULONG:
case DATA_OBJECT_USHORT:
case DATA_OBJECT_BOOL:
case DATA_OBJECT_CHAR:
case DATA_OBJECT_BYTE:
case DATA_OBJECT_WORD:
case DATA_OBJECT_DWORD:
{
_AddToByteArray(&pBA, (long)ep->GetLongAttr(0));//变量数据
}
break;
case DATA_OBJECT_GUID:
{
CGUID tGUID;
ep->GetGuidAttr(0, tGUID);
_AddToByteArray(&pBA, tGUID);//变量数据
}
break;
case DATA_OBJECT_BUFFER:
{
long bufSize = ep->GetBufSize(0);
if(bufSize)
{
BYTE* buf = new BYTE[bufSize];
ep->GetBufAttr(0, (void*)buf, bufSize);
_AddToByteArray(&pBA, buf, bufSize);//变量数据
SAFE_DELETE_ARRAY(buf);
}
}
break;
}
}
}
m_mapDirtyAttrData.clear();
}