95 lines
1.9 KiB
C++
95 lines
1.9 KiB
C++
#include "stdafx.h"
|
|
#include "DBFDef.h"
|
|
#include "DBFException.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#ifdef _DEBUG
|
|
BOOL TGAssertFailedLine(LPCSTR lpszDBFCall, LPCSTR lpszFile, int nLine)
|
|
{
|
|
if (afxTraceFlags & traceDatabase)
|
|
{
|
|
TRACE0("\nDBF Call Failed.");
|
|
TRACE1("\n\t%hs", lpszDBFCall);
|
|
TRACE2("\n\tIn file %hs on line %d", lpszFile, nLine);
|
|
}
|
|
return AfxAssertFailedLine(lpszFile, nLine);
|
|
}
|
|
#endif // _DEBUG
|
|
|
|
#ifdef _DEBUG
|
|
void CDBFErrorInfo::Dump(CDumpContext& dc) const
|
|
{
|
|
dc << "a CDaoErrorInfo at " << (void*)this;
|
|
|
|
dc << "\nm_lErrorCode = " << m_lErrorCode;
|
|
// dc << "\nm_strSource = " << m_strSource;
|
|
dc << "\nm_strDescription = " << m_strDescription;
|
|
// dc << "\nm_strHelpFile = " << m_strHelpFile;
|
|
// dc << "\nm_lHelpContext = " << m_lHelpContext;
|
|
|
|
dc << "\n";
|
|
}
|
|
#endif // _DEBUG
|
|
|
|
IMPLEMENT_DYNAMIC(CDBFException, CException)
|
|
|
|
CDBFException::CDBFException()
|
|
{
|
|
m_pErrorInfo = NULL;
|
|
}
|
|
|
|
CDBFException::~CDBFException()
|
|
{
|
|
delete m_pErrorInfo;
|
|
m_pErrorInfo = NULL;
|
|
}
|
|
|
|
// Operations
|
|
void CDBFException::GetErrorInfo()
|
|
{
|
|
FillErrorInfo();
|
|
}
|
|
|
|
// Implementation
|
|
void CDBFException::FillErrorInfo()
|
|
{
|
|
// Allocate the error info structure if necessary
|
|
if (m_pErrorInfo == NULL)
|
|
m_pErrorInfo = new CDBFErrorInfo;
|
|
|
|
m_pErrorInfo->m_lErrorCode = m_nTGDBFError;
|
|
}
|
|
|
|
BOOL CDBFException::GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
|
|
PUINT pnHelpContext)
|
|
{
|
|
if (pnHelpContext != NULL)
|
|
*pnHelpContext = 0;
|
|
|
|
CString strError;
|
|
if(!strError.LoadString(m_nTGDBFError))
|
|
{
|
|
strError.Format(_T("00000000%X"),m_nTGDBFError);
|
|
strError = "Error number 0x" + strError.Right(8) + ".";
|
|
}
|
|
|
|
lstrcpyn(lpszError, strError, nMaxError-1);
|
|
lpszError[nMaxError-1] = '\0';
|
|
return TRUE;
|
|
}
|
|
|
|
void AFXAPI TGThrowDBFException(long nTGDBFError)
|
|
{
|
|
CDBFException* pException;
|
|
pException = new CDBFException;
|
|
|
|
pException->m_nTGDBFError = nTGDBFError;
|
|
|
|
THROW(pException);
|
|
}
|