示例1:创建成员对象
![](http://www.itpub.net/static/image/smiley/qqbiaoqin/pz.gif)
注意,VC中CLongBinary处理大字段需至少预先分配1的长度,在Exchange中才不会出错,并且大字段不能作为首字段查询)
CLongBinary LB;
CLongBinary* pX = &LB;
pX->m_dwDataLength = 1;
pX->m_hData=::GlobalAlloc(GMEM_MOVEABLE,1);
BYTE* b = (BYTE*)::GlobalLock(pX->m_hData);
::GlobalUnlock(pX->m_hData);*b = 0;
注意,以下全部使用*pX,请替换! (*pX为成员变量指针,针对数据集class)
示例2:Exchange:
RFX_LongBinary(pFX,_T("字段名"
![](http://www.itpub.net/static/image/smiley/qqbiaoqin/baiy.gif)
,*pX);
示例3:取值:设strValue为为实际返回的内容;
BYTE* c = (BYTE*)::GlobalLock(pX->m_hData);
::GlobalUnlock(pX->m_hData);
BYTE* b = new BYTE[pX->m_dwDataLength+1];
memcpy(b,c,pX->m_dwDataLength); *(b+pX->m_dwDataLength) = 0;
strValue = (CString)b;
delete [] b;
示例4:设置字段值:设strValue为要设置的内容;
BYTE* c;
longl;
c = (BYTE*)strValue.GetBuffer(0);
l = strValue.GetLength();
SetFieldDirty (pX,TRUE ); //
if( c&&l )
{
if(!pX->m_dwDataLength)
SetFieldNull(pX,FALSE);
if(pX->m_hData) pX->m_hData=::GlobalReAlloc(pX->m_hData,l,GMEM_MOVEABLE);
else
pX->m_hData=::GlobalAlloc(GMEM_MOVEABLE,l);
pX->m_dwDataLength = l;
BYTE* b = (BYTE*)::GlobalLock(pX->m_hData);
::GlobalUnlock(pX->m_hData); memcpy(b,c,l);
}
else
{
SetFieldNull(pX,TRUE ); //
if(pX->m_hData)::GlobalFree(pX->m_hData);
pX->m_hData = NULL;
pX->m_dwDataLength = 0;
} |