#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 = _T("Error number 0x") + strError.Right(8) + _T("."); } 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); }