| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #include "stdafx.h"
- #ifdef AFX_CORE2_SEG
- #pragma code_seg(AFX_CORE2_SEG)
- #endif
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define new DEBUG_NEW
- #ifdef _DEBUG
- // character strings to use for dumping CArchiveException
- static const LPCSTR rgszCArchiveExceptionCause[] =
- {
- "none",
- "generic",
- "readOnly",
- "endOfFile",
- "writeOnly",
- "badIndex",
- "badClass",
- "badSchema",
- };
- static const char szUnknown[] = "unknown";
- #endif
- BOOL CArchiveException::GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
- PUINT pnHelpContext)
- {
- ASSERT(lpszError != NULL && AfxIsValidString(lpszError, nMaxError));
- if (pnHelpContext != NULL)
- *pnHelpContext = m_cause + AFX_IDP_ARCH_NONE;
- // we can use CString here; archive errors aren't caused
- // by being out of memory.
- CString strMessage;
- CString strFileName = m_strFileName;
- if (strFileName.IsEmpty())
- strFileName.LoadString(AFX_IDS_UNNAMED_FILE);
- AfxFormatString1(strMessage,
- m_cause + AFX_IDP_ARCH_NONE, strFileName);
- lstrcpyn(lpszError, strMessage, nMaxError);
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CArchiveException
- #ifdef _DEBUG
- void CArchiveException::Dump(CDumpContext& dc) const
- {
- CObject::Dump(dc);
- dc << " m_cause = ";
- if (m_cause >= 0 && m_cause < _countof(rgszCArchiveExceptionCause))
- dc << rgszCArchiveExceptionCause[m_cause];
- else
- dc << szUnknown;
- dc << "\n";
- }
- #endif //_DEBUG
- void AFXAPI AfxThrowArchiveException(int cause,
- LPCTSTR lpszArchiveName /* = NULL */)
- {
- #ifdef _DEBUG
- LPCSTR lpsz;
- if (cause >= 0 && cause < _countof(rgszCArchiveExceptionCause))
- lpsz = rgszCArchiveExceptionCause[cause];
- else
- lpsz = szUnknown;
- TRACE1("CArchive exception: %hs.\n", lpsz);
- #endif //_DEBUG
- THROW(new CArchiveException(cause, lpszArchiveName));
- }
- #ifdef AFX_INIT_SEG
- #pragma code_seg(AFX_INIT_SEG)
- #endif
- IMPLEMENT_DYNAMIC(CArchiveException, CException)
- /////////////////////////////////////////////////////////////////////////////
|