⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlerrorhandler.cpp

📁 这是一个软件水平资格考试中使用的CASL汇编语言的编译器,实现文件中包括一个编译器,一个虚拟机,一个类似于Debug的调试器.
💻 CPP
字号:
// XmlErrorHandler.cpp: implementation of the CXmlErrorHandler class.
//
//////////////////////////////////////////////////////////////////////

#include "Stdafx.h"
#include "XmlErrorHandler.h"
#include "PreInclude.h"
#include <ctime>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CXmlErrorHandler::CXmlErrorHandler()
{
  //初始化错误日志文件名及错误日志文件名的前缀
  m_strErrorLogFile = "";
  m_strFilePrefix = "Default";
}

CXmlErrorHandler::~CXmlErrorHandler()
{
  if (m_ofErrorLog.is_open())
  {
    m_ofErrorLog.close();
  }
}


/////////////////////////////////////////////////////////////////////////
//函数名称:BeginErrorLog
//函数功能:-------------准备记录错误日志-----------------------------------
//入口参数:无
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::BeginErrorLog()
{
  
#ifdef XML_LOG_DEBUG_DEF  
  //--------------先生成一个错误日志文件名------------------------------
  //生成错误日志文件名的规则是:
  //文件名前缀_年月日_时_分_秒.xml
  time_t timeNow;
  tm *   pTmDetailNow;
  char szTemp[10];
  tzset();
  time(&timeNow);
  pTmDetailNow = localtime(&timeNow);
  if (NULL == pTmDetailNow)
  {
    m_strErrorLogFile = m_strFilePrefix + "_NoTime.xml";
  }
  else
  {
    m_strErrorLogFile = m_strFilePrefix;
    sprintf(szTemp, "%d", pTmDetailNow->tm_year + 1900);
    m_strErrorLogFile += szTemp;
    sprintf(szTemp, "%d", pTmDetailNow->tm_mon);
    m_strErrorLogFile += szTemp;
    sprintf(szTemp, "%d", pTmDetailNow->tm_mday);
    m_strErrorLogFile += szTemp;
    sprintf(szTemp, "_%d_", pTmDetailNow->tm_hour);
    m_strErrorLogFile += szTemp;
    sprintf(szTemp, "%d_", pTmDetailNow->tm_min);
    m_strErrorLogFile += szTemp;
    sprintf(szTemp, "%d.xml", pTmDetailNow->tm_sec);
    m_strErrorLogFile += szTemp;
  }

  //----------------创建指定名称的错误日志文件------------------------------
  try
  {
    if (m_ofErrorLog.is_open())
    {
      m_ofErrorLog.close();
    }
    m_ofErrorLog.open(m_strErrorLogFile.c_str(), ios::out | ios::trunc);

  
    //写入起始信息
    m_ofErrorLog << "<Errors>" << endl;
  }
  catch (...)
  {
    cout << "some error occur during file I/O operation" << endl;
  }
  return STATUS_OK;
#endif

  return STATUS_OK;
  
}


/////////////////////////////////////////////////////////////////////////
//函数名称:EndErrorLog
//函数功能:-------------结束错误日志的记录---------------------------------
//入口参数:无
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::EndErrorLog()
{
#ifdef XML_LOG_DEBUG_DEF    
  try 
  {
    if (m_ofErrorLog.is_open())
    {
      m_ofErrorLog << "</Errors>" << endl;
      m_ofErrorLog.close();
      return STATUS_OK;
    }
    else
    {
      return STATUS_FAILED;
    }
  }
  catch(...)
  {
    cout << "some error occur during file I/O operation" << endl;
    if (m_ofErrorLog.is_open())
    {
      m_ofErrorLog.close();
    }
    return STATUS_FAILED;
  }
#endif

  return STATUS_OK;

}


/////////////////////////////////////////////////////////////////////////
//函数名称:WriteErrorMessage
//函数功能:-------------写入指定的错误信息到错误日志中----------------------
//入口参数:const char * argMsg------------------将被写入错误日志的错误信息
//出口参数:无
//返回值:int--------------STATUS_OK表示操作成功,其他表示操作出现问题
//开发人员:杨军
//开发日期:2004-4-18
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CXmlErrorHandler::WriteErrorMessage(const char * argMsg)
{
#ifdef XML_LOG_DEBUG_DEF
  time_t timeNow;
  try
  {
    if (m_ofErrorLog.is_open())
    {
      time(&timeNow);
      m_ofErrorLog << "\t" << "<Message>" << endl;
      m_ofErrorLog << "\t\t" << "<Time>" << endl;
      m_ofErrorLog << "\t\t\t" << ctime(&timeNow);
      m_ofErrorLog << "\t\t" << "</Time>" << endl;
      m_ofErrorLog << "\t\t" << "<Message>" << endl;
      m_ofErrorLog << "\t\t\t" << argMsg << endl;
      m_ofErrorLog << "\t\t" << "</Message>" << endl;
      m_ofErrorLog << "\t" << "</Message>" << endl;
      return STATUS_OK;
    }
    else
    {
      return STATUS_FAILED;
    }
  }
  catch (...)
  {
    cout << "some error occur during file I/O operation" << endl;
    return STATUS_FAILED;
  }
#endif

  return STATUS_OK;
}

//------------向用户显示错误消息---------------------------------
void CXmlErrorHandler::ShowErrMsg(const char * argMsg) 
{
  #ifdef WINDOW_MODE
    //::MessageBox(NULL, argMsg, "Error", MB_OK);
    //AfxMessageBox(argMsg);
  #else ifdef CONSOLE_MODE
    cout << argMsg;
  #endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -