Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

115 lines
2.3 KiB
C++

#include "stdafx.h"
#include "DBFFields.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CDBFFields::CDBFFields()
{
m_pCurRec = NULL;
m_pFields = NULL;
m_nFieldCount = 0;
m_CurField.m_chType = '\0';
m_CurField.m_nLen = 0;
m_CurField.m_nDec = 0;
}
CDBFFields::~CDBFFields()
{
}
_Field_& CDBFFields::operator[](int nIndexFld)
{
assert(nIndexFld < m_nFieldCount);
m_CurField.m_strName = m_pFields[nIndexFld].field_name;
m_CurField.m_chType = m_pFields[nIndexFld].field_type;
switch(m_CurField.m_chType)
{
case FLD_TYPE_CHARACTER:
case FLD_TYPE_MEMO:
case FLD_TYPE_GENERAL:
case FLD_TYPE_PICTURE:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.char_len;
m_CurField.m_nDec = 0;
break;
}
case FLD_TYPE_CURRENCY:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.num_size.len;
m_CurField.m_nDec = m_pFields[nIndexFld].len_info.num_size.dec;
break;
}
case FLD_TYPE_NUMERIC:
case FLD_TYPE_FLOAT:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.num_size.len;
m_CurField.m_nDec = m_pFields[nIndexFld].len_info.num_size.dec;
break;
}
case FLD_TYPE_DATE:
case FLD_TYPE_DATETIME:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.char_len;
m_CurField.m_nDec = 0;
break;
}
case FLD_TYPE_DOUBLE: //FLD_TYPE_BINARY
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.num_size.len;
m_CurField.m_nDec = m_pFields[nIndexFld].len_info.num_size.dec;
break;
}
case FLD_TYPE_INTEGER:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.char_len;
m_CurField.m_nDec = 0;
break;
}
case FLD_TYPE_LOGICAL:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.char_len;
m_CurField.m_nDec = 0;
break;
}
default:
{
m_CurField.m_nLen = m_pFields[nIndexFld].len_info.char_len;
m_CurField.m_nDec = 0;
}
}
return m_CurField;
}
_Field_& CDBFFields::operator[](CTDbfString strNameFld)
{
assert(m_nFieldCount > 0);
short i = 0;
CTDbfString strCurFldName;
do
{
strCurFldName = m_pFields[i].field_name;
}
while(strCurFldName != strNameFld && i <= m_nFieldCount);
assert(i < m_nFieldCount);
return (*this)[i];
}
short CDBFFields::GetFieldCount()
{
return m_nFieldCount;
}
FIELD_REC* CDBFFields::GetFieldRec(int nIndexFld) const
{
return &m_pFields[nIndexFld];
}