#include "pch.h" #pragma hdrstop #include "except.h" CExceptionString::CExceptionString( LPCTSTR pszText ) : m_pszText(NULL) { m_pszText = Dup(pszText); } CExceptionString::CExceptionString( const CExceptionString& rhs ) : m_pszText(NULL) { *this = rhs; } CExceptionString& CExceptionString::operator = ( const CExceptionString& rhs ) { if (this != &rhs) { delete[] m_pszText; m_pszText = Dup(rhs.m_pszText); } return *this; } LPTSTR CExceptionString::Dup( LPCTSTR psz ) { const size_t cch = lstrlen(psz) + 1; LPTSTR pszNew = new TCHAR[cch]; lstrcpyn(pszNew, psz, cch); return pszNew; } #if DBG // // Don't include these strings in free builds. Since the strings // aren't localized, they're intended for debug output only. // LPCTSTR CMemoryException::m_pszReasons[] = { TEXT("alloc"), TEXT("overflow"), TEXT("index"), TEXT("range"), TEXT("pointer") }; LPCTSTR CFileException::m_pszReasons[] = { TEXT("create"), TEXT("read"), TEXT("write"), TEXT("diskfull"), TEXT("access"), TEXT("device") }; LPCTSTR CSyncException::m_pszReasons[] = { TEXT("create"), TEXT("timeout"), TEXT("abandoned") }; LPCTSTR CSyncException::m_pszObjects[] = { TEXT("mutex"), TEXT("critsect"), TEXT("semaphore"), TEXT("event"), TEXT("thread"), TEXT("process") }; LPCTSTR CResourceException::m_pszReasons[] = { TEXT("accelerator"), TEXT("anicursor"), TEXT("aniicon"), TEXT("bitmap"), TEXT("cursor"), TEXT("dialog"), TEXT("font"), TEXT("fontdir"), TEXT("group_cursor"), TEXT("group_icon"), TEXT("icon"), TEXT("menu"), TEXT("messagetable"), TEXT("rcdata"), TEXT("string"), TEXT("version") }; LPCTSTR CResourceException::ReasonText( void ) const { static TCHAR szMsg[MAX_PATH]; wnsprintf(szMsg, ARRAYSIZE(szMsg), TEXT("%s (id: %d)"), m_pszReasons[Type()], m_uResId ); return szMsg; } #endif // DBG