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

📄 dbconfiginfounit.cpp

📁 指纹门禁机管理系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "DBConfigInfoUnit.h"
#include <msxmldom.hpp>
#include <XMLDoc.hpp>
#include <xmldom.hpp>

//---------------------------------------------------------------------------
TConfigInfoXML::TConfigInfoXML(const AnsiString iConfigFile)
{
  FConfigFile = iConfigFile;      //配置文件名
  if (!FileExists(FConfigFile))   //文件不存在
  {
    pCurXML = LoadXMLDocument("");
    pCurXML->Active = true;
  }
  else
  {
    memset(&FConfigInfo,0,sizeof(DBConfigInfo_T));
    pCurXML = LoadXMLDocument(FConfigFile);
    pCurXML->Active = true;
    GetConfigInfo(FConfigInfo);
  }
}
//--------------------------------------

TConfigInfoXML::~TConfigInfoXML()
{
  if (pCurXML->Active)
    pCurXML->Active = false;
}
//--------------------------------------
bool TConfigInfoXML::GetDefaultConfigInfo(SystemConfig_T& oConfigInfo)
{
    memset(&oConfigInfo,0,sizeof(DBConfigInfo_T));

    memcpy(oConfigInfo.CompanyName,"MIAXIS",6);
    oConfigInfo.ViewConfig.fvWarningEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvUncloseEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvDangerEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvDeviceErrorColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvOtherColor = (int)clBlack;
    oConfigInfo.ViewConfig.WarningPanelStyle = 0;
    oConfigInfo.ViewConfig.ShowMaxCount = 35;
    return true;
}
//--------------------------------------

bool TConfigInfoXML::GetConfigInfo(SystemConfig_T& oConfigInfo)
{
  if (FileExists(FConfigFile))   //文件是否存在
  {
    pCurXML = LoadXMLDocument(FConfigFile);
    _di_IXMLNode lRootNode = pCurXML->ChildNodes->FindNode("ConfigInfo");
    if (!lRootNode)
      return false;

    _di_IXMLNode lDBNode,lFormNode,lSubNode;
    AnsiString lTransValue;
    memset(&oConfigInfo,0,sizeof(DBConfigInfo_T));

    oConfigInfo.ViewConfig.fvWarningEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvUncloseEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvDangerEventColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvDeviceErrorColor = (int)clBlack;
    oConfigInfo.ViewConfig.fvOtherColor = (int)clBlack;
    oConfigInfo.ViewConfig.WarningPanelStyle = 0;
    oConfigInfo.ViewConfig.ShowMaxCount = 35;

    //读公司名称
    lSubNode = lRootNode->ChildNodes->FindNode("CompanyName");
    if (lSubNode)
    {
      lTransValue = lSubNode->Text;
      memcpy(oConfigInfo.CompanyName,lTransValue.c_str(),lTransValue.Length());
    }

    //读数据库配置
    lDBNode = lRootNode->ChildNodes->FindNode("DBConfig");
    if (lDBNode)
    {
       //读数据库类型
       lSubNode = lDBNode->ChildNodes->FindNode("DBType");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         oConfigInfo.DBConfig.DBType = AnsiString(lTransValue).Trim().ToInt();
       }

       //读数据库提供者
       lSubNode = lDBNode->ChildNodes->FindNode("dbProvider");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         memcpy(oConfigInfo.DBConfig.dbProvider,lTransValue.c_str(),lTransValue.Length());
       }

       if (oConfigInfo.DBConfig.DBType == FileDB_T)
       {
           //读 文件数据库名
           lSubNode = lDBNode->ChildNodes->FindNode("dbAccessFile");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbAccessFile,lTransValue.c_str(),lTransValue.Length());
           }
       }
       else if (oConfigInfo.DBConfig.DBType == RelationDB_T)
       {
           //读数据库主机名
           lSubNode = lDBNode->ChildNodes->FindNode("dbHostName");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbHostName,lTransValue.c_str(),lTransValue.Length());
           }

           //读数据库主机名
           lSubNode = lDBNode->ChildNodes->FindNode("dbHostName");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbHostName,lTransValue.c_str(),lTransValue.Length());
           }

           //读数据库名
           lSubNode = lDBNode->ChildNodes->FindNode("dbDatabaseName");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbDatabaseName,lTransValue.c_str(),lTransValue.Length());
           }

           //读用户名
           lSubNode = lDBNode->ChildNodes->FindNode("dbUserName");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbUserName,lTransValue.c_str(),lTransValue.Length());
           }

           //读用户密码
           lSubNode = lDBNode->ChildNodes->FindNode("dbPassword");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             memcpy(oConfigInfo.DBConfig.dbPassword,lTransValue.c_str(),lTransValue.Length());
           }

           //读标识位
           lSubNode = lDBNode->ChildNodes->FindNode("dbFlag");
           if (lSubNode)
           {
             lTransValue = lSubNode->Text;
             oConfigInfo.DBConfig.dbFlag = StrToInt(lTransValue);
           }
       }
    }
    //读界面配置信息
    lFormNode = lRootNode->ChildNodes->FindNode("FormConfig");
    if (lFormNode)
    {
       //读警告事件颜色
       lSubNode = lFormNode->ChildNodes->FindNode("fvWarningEventColor");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.fvWarningEventColor = StrToInt(lTransValue);
       }
       //读门未关好颜色
       lSubNode = lFormNode->ChildNodes->FindNode("fvUncloseEventColor");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.fvUncloseEventColor = StrToInt(lTransValue);
       }

       //读胁迫事件颜色
       lSubNode = lFormNode->ChildNodes->FindNode("fvDangerEventColor");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.fvDangerEventColor = StrToInt(lTransValue);
       }
       //读设备异常颜色
       lSubNode = lFormNode->ChildNodes->FindNode("fvDeviceErrorColor");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.fvDeviceErrorColor = StrToInt(lTransValue);
       }
       //读其它事件颜色
       lSubNode = lFormNode->ChildNodes->FindNode("fvOtherColor");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.fvOtherColor = StrToInt(lTransValue);
       }

       //读警告事件面板右边或下面
       lSubNode = lFormNode->ChildNodes->FindNode("WarningPanelStyle");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.WarningPanelStyle = StrToInt(lTransValue);
       }
       //显示最大记录数
       lSubNode = lFormNode->ChildNodes->FindNode("ShowMaxCount");
       if (lSubNode)
       {
         lTransValue = lSubNode->Text;
         if (!lTransValue.IsEmpty())
            oConfigInfo.ViewConfig.ShowMaxCount = StrToInt(lTransValue);
       }
    }
    return true;
  }
  return false;

}
//--------------------------------------

bool TConfigInfoXML::SetConfigInfo(SystemConfig_T iConfigInfo)
{
   pCurXML->ChildNodes->Clear();
   pCurXML->Version = "1.0";
   pCurXML->Encoding = "UTF-8";
   _di_IXMLNode RootNode = pCurXML->CreateElement("ConfigInfo","");
   pCurXML->DocumentElement = RootNode;
   _di_IXMLNode  lNewNode;

   //写 公司名称
   lNewNode = RootNode->AddChild("CompanyName");
   lNewNode->Text = AnsiString(iConfigInfo.CompanyName);

   _di_IXMLNode lDBNode = RootNode->AddChild("DBConfig");
   if (lDBNode)
   {
      //写 数据库类型
      lNewNode = lDBNode->AddChild("DBType");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.DBType);

      //写 数据库文件
      lNewNode = lDBNode->AddChild("dbAccessFile");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbAccessFile).Trim();

      //写 数据库提供者
      lNewNode = lDBNode->AddChild("dbProvider");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbProvider).Trim();

      //写 数据库主机名
      lNewNode = lDBNode->AddChild("dbHostName");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbHostName);

      //写 数据库名
      lNewNode = lDBNode->AddChild("dbDatabaseName");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbDatabaseName);

      //写 用户名
      lNewNode = lDBNode->AddChild("dbUserName");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbUserName);

      //写 用户密码
      lNewNode = lDBNode->AddChild("dbPassword");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbPassword);

      //写 标识位
      lNewNode = lDBNode->AddChild("dbFlag");
      lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbFlag);
   }
   _di_IXMLNode lFormNode = RootNode->AddChild("FormConfig");
   if (lFormNode)
   {
      //写 警告事件颜色
      lNewNode = lFormNode->AddChild("fvWarningEventColor");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvWarningEventColor);

      //写 门未关好颜色
      lNewNode = lFormNode->AddChild("fvUncloseEventColor");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvUncloseEventColor);

      //写 胁迫事件颜色
      lNewNode = lFormNode->AddChild("fvDangerEventColor");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvDangerEventColor);

      //写 设备异常颜色
      lNewNode = lFormNode->AddChild("fvDeviceErrorColor");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvDeviceErrorColor);

      //写 其它事件颜色
      lNewNode = lFormNode->AddChild("fvOtherColor");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvOtherColor);

      //写 警告事件面板右边或下面
      lNewNode = lFormNode->AddChild("WarningPanelStyle");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.WarningPanelStyle);

      //写 显示最大记录数
      lNewNode = lFormNode->AddChild("ShowMaxCount");
      lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.ShowMaxCount);
   }
   return true;
}
//--------------------------------------

bool TConfigInfoXML::SaveConfigInfo(AnsiString iConfigFileName)
{
   try
   {
     pCurXML->SaveToFile(iConfigFileName);
   }
   catch(...)
   {
     return false;
   }
   return true;
}
//--------------------------------------

bool TConfigInfoXML::SaveConfigInfo()
{
  return SaveConfigInfo(FConfigFile);
}
//--------------------------------------

#pragma package(smart_init)

⌨️ 快捷键说明

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