#if !defined(_DBFEXEPTION_H__INCLUDED_) #define _DBFEXEPTION_H__INCLUDED_ #define NO_TG_DBF_ERROR 0 #define TG_DBF_ERROR_MIN 3000 #define TG_DBF_ERROR TG_DBF_ERROR_MIN #define TG_DBF_ERROR_DBFILE_CREATE TG_DBF_ERROR+1 #define TG_DBF_ERROR_DBFILE_OPEN TG_DBF_ERROR+2 #define TG_DBF_ERROR_DBFILE_MEMORYLOAD TG_DBF_ERROR+3 #define TG_DBF_ERROR_DBFHEADER_READ TG_DBF_ERROR+4 #define TG_DBF_ERROR_DBFHEADER_WRITE TG_DBF_ERROR+5 #define TG_DBF_ERROR_NOT_TABLE TG_DBF_ERROR+6 #define TG_DBF_ERROR_NOT_FIELDS TG_DBF_ERROR+7 #define TG_DBF_ERROR_FILE_SIZE TG_DBF_ERROR+8 #define TG_DBF_ERROR_FIELDS_READ TG_DBF_ERROR+9 #define TG_DBF_ERROR_MEMO_OPEN TG_DBF_ERROR+10 #define TG_DBF_ERROR_MEMO_HEAD_READ TG_DBF_ERROR+11 #define TG_DBF_ERROR_MEMO_BLOCK_SIZE TG_DBF_ERROR+12 #define TG_DBF_ERROR_MEMO_FIELD_READ TG_DBF_ERROR+13 #define TG_DBF_ERROR_MEMO_FIELD_WRITE TG_DBF_ERROR+14 #define TG_DBF_ERROR_MEMO_RECORD_READ TG_DBF_ERROR+15 #define TG_DBF_ERROR_MEMO_RECORD_WRITE TG_DBF_ERROR+16 #define TG_DBF_ERROR_RECORD_OUTOFRANGE TG_DBF_ERROR+17 #define TG_DBF_ERROR_RECORD_READ TG_DBF_ERROR+18 #define TG_DBF_ERROR_RECORD_WRITE TG_DBF_ERROR+19 #define TG_DBF_ERROR_MAX TG_DBF_ERROR+19 // Logging helpers //#ifdef _DEBUG //BOOL TGAssertFailedLine(LPCSTR lpszDBFCall, LPCSTR lpszFile, int nLine); //#define DBF_CHECK_ERROR(f, err) if (!(f)) return FALSE; //// do \ //// { \ //// if(!(f)) \ //// if(TGAssertFailedLine(#f,THIS_FILE, __LINE__)) \ //// { AfxDebugBreak(); }\ //// else TGThrowDBFException(err);\ //// } \ //// while (0) // //#else #define DBF_CHECK_ERROR(f, err) if(!(f)) return FALSE; //TGThrowDBFException(err); //#endif // _DEBUG // Info structures struct CDBFErrorInfo { // Attributes long m_lErrorCode; CString m_strDescription; //#ifdef _DEBUG // virtual void Dump(CDumpContext& dc) const; //#endif }; class CDBFException : public CException { DECLARE_DYNAMIC(CDBFException) public: CDBFException(); public: CDBFErrorInfo* m_pErrorInfo; long m_nTGDBFError; public: void GetErrorInfo(/*int nIndex*/); public: virtual ~CDBFException(); virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError, PUINT pnHelpContext = NULL); protected: void FillErrorInfo(); }; void AFXAPI TGThrowDBFException(long nTGDBFError = NO_TG_DBF_ERROR); //{{AFX_INSERT_LOCATION}} #endif // !defined(_DBFEXEPTION_H__INCLUDED_)