?? record.cpp
字號:
// Record.cpp: implementation of the CRecord class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DBReader.h"
#include "Record.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRecord::CRecord()
{
mFieldNum=0;
pFields=NULL;
pData=NULL;
}
CRecord::~CRecord()
{
if(pFields!=NULL)
free(pFields);
if(pData!=NULL)
free(pData);
pFields=NULL;
pData=NULL;
}
unsigned char * CRecord::GetField(char *mFieldName, unsigned char * buf,UINT *mLen)
{
UINT i;
UINT len=0;
for(i=0;i<mFieldNum;i++)
{
if(strcmp(mFieldName,(const char *)pFields[i].name)==0)
break;
len+=pFields[i].length;
}
if(i==mFieldNum)
return NULL;
else
{
*mLen=pFields[i].length;
memcpy(buf,pData+len+1,*mLen);
return pData+len;
}
}
unsigned char * CRecord::GetField2(int tiIndex, unsigned char * buf,UINT *mLen)
{
UINT i;
UINT len=0;
for(i=0;i<=tiIndex;i++)
{
len+=pFields[i].length;
}
if(i==mFieldNum)
return NULL;
else
{
*mLen=pFields[i].length;
memcpy(buf,pData+len+1,*mLen);
return pData+len;
}
}
unsigned char * CRecord::GetFirstField(unsigned char * buf,UINT *mLen)
{
return GetField((char *)pFields[0].name,buf,mLen);
}
int CRecord::SetField(char *mFieldName, unsigned char * buf,UINT mLen)
{
UINT i;
UINT len=0;
for(i=0;i<mFieldNum;i++)
{
if(strcmp(mFieldName,(const char *)pFields[i].name)==0)
break;
len+=pFields[i].length;
}
if(i==mFieldNum)
return 0;
else
{
if(mLen>pFields[i].length)
mLen=pFields[i].length;
memcpy(pData+len+1,buf,mLen);
return 1;
}
}
int CRecord::Init(CDBF *mDbf)
{
if(mDbf==NULL)
return 0;
if(pFields!=NULL)
free(pFields);
if(pData!=NULL)
free(pData);
pFields=(DBFFIELD *)calloc(mDbf->mFieldTotalLen ,1);
pData=(unsigned char *)calloc(mDbf->mRecLen ,1);
memcpy(pFields,mDbf->pFields ,mDbf->mFieldTotalLen);
mFieldNum=mDbf->mFieldNum ;
mRecLen=mDbf->mRecLen ;
return 1;
}
int CRecord::SetUndel()
{
pData[0]=0x20;
return 1;
}
int CRecord::SetDel()
{
pData[0]='*';
return 1;
}
CString CRecord::ToString()
{
CString sRow;
sRow.Empty();
for (int i = 0; i < mFieldNum; i ++)
{
UINT iLength;
unsigned char buf[MAXCHAR];
memset(buf,0,MAXCHAR);
buf[pFields[i].length + 1] = 0;
GetField((char*)pFields[i].name,buf,&iLength);
CString sTemp;
sTemp.Format("%s",buf);
sRow += sTemp + " ";
}
sRow += "\r\n";
return sRow;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -