115 lines
2.3 KiB
C++
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];
|
|
}
|