stdafx.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. // stdafx.cpp : 只包括标准包含文件的源文件
  2. // PutOutBinary.pch 将作为预编译头
  3. // stdafx.obj 将包含预编译类型信息
  4. #include "stdafx.h"
  5. #include <locale.h>
  6. #define DB_SS_CONN_WITH_PORT _T("driver={SQL Server};Server=%s,%d;database=%s;uid=%s;pwd=%s")
  7. #define DB_SS_CONN_WITHOUT_PORT _T("driver={SQL Server};Server=%s;database=%s;uid=%s;pwd=%s")
  8. #define DB_SS_CONN_WITHOUT_PORT2 _T("driver={SQL Server};Server=%s;database=%d;uid=%s;pwd=%s")
  9. #define DB_SW_CONN_WITH_PORT _T("Driver={SQL Server};Server=%s,%d;Database=%s;Trusted_Connection=yes;")
  10. #define DB_SW_CONN_WITHOUT_PORT _T("Driver={SQL Server};Server=%s;Database=%s;Trusted_Connection=yes;")
  11. #define DB_SW_CONN_WITHOUT_PORT2 _T("Driver={SQL Server};Server=%s;Database=%d;Trusted_Connection=yes;")
  12. //////////////////////////////////////////////////////////////////////////
  13. // 全局变量:
  14. TCHAR g_szIniFile[MAX_PATH] = {0};
  15. TCHAR g_szModulePath[MAX_PATH] = { 0 };
  16. TCHAR g_szModuleFileName[MAX_PATH] = { 0 };
  17. TCHAR g_szDBSource[MAX_PATH] = {0};
  18. TCHAR g_szDBAccount[MAX_PATH] = { 0 };
  19. TCHAR g_szDBPassWord[MAX_PATH] = { 0 };
  20. TCHAR g_szDBName[MAX_PATH] = { 0 };
  21. TCHAR g_szConnectString[MAX_PATH] = {0};
  22. DWORD g_dwDBServerPort = 0;
  23. /************************************************************************/
  24. /* 函数:[8/31/2017 IT];
  25. /* 描述:;
  26. /* 参数:;
  27. /* [IN] :;
  28. /* [OUT] :;
  29. /* [IN/OUT] :;
  30. /* 返回:void;
  31. /* 注意:;
  32. /* 示例:;
  33. /*
  34. /* 修改:;
  35. /* 日期:;
  36. /* 内容:;
  37. /************************************************************************/
  38. int GetSysIniInfo(const TCHAR *szPath, const TCHAR *szIniName)
  39. {
  40. TCHAR szDrive[_MAX_DRIVE] = { 0 };
  41. TCHAR szDir[_MAX_DIR] = { 0 };
  42. TCHAR szFName[_MAX_FNAME] = { 0 };
  43. TCHAR szExt[_MAX_EXT] = { 0 };
  44. ::GetModuleFileName(NULL, g_szModulePath, sizeof(g_szModulePath) / sizeof(TCHAR));
  45. _stprintf_s(g_szModulePath, MAX_PATH, _T("%s"), g_szModulePath);
  46. _tsplitpath_s(g_szModulePath, szDrive, szDir, szFName, szExt);
  47. _tcscpy_s(g_szModulePath, szDrive);
  48. _tcscat_s(g_szModulePath, szDir);
  49. if (szPath != NULL && szIniName != NULL)
  50. _stprintf_s(g_szIniFile, _T("%s%s"), szPath, szIniName);
  51. else
  52. _stprintf_s(g_szIniFile, _T("%sDatabase.ini"), g_szModulePath);
  53. HANDLE hFile = CreateFile(g_szIniFile, 0/*GENERIC_READ*/, 0, NULL, OPEN_EXISTING, 0, NULL);
  54. if (ERROR_FILE_NOT_FOUND == GetLastError())
  55. {
  56. return -1;
  57. }
  58. CloseHandle(hFile);
  59. // 获取服务器端信息;
  60. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbSource"), _T(""), g_szDBSource, MAX_PATH, g_szIniFile);
  61. g_dwDBServerPort = GetPrivateProfileInt(_T("DatabaseInfo"), _T("dbServerPort"), 0, g_szIniFile);
  62. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbAccount"), _T(""), g_szDBAccount, MAX_PATH, g_szIniFile);
  63. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbPassWord"), _T(""), g_szDBPassWord, MAX_PATH, g_szIniFile);
  64. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbName"), _T(""), g_szDBName, MAX_PATH, g_szIniFile);
  65. if (g_dwDBServerPort != 0)
  66. {
  67. if (_tcscmp(g_szDBAccount, _T("")) == 0)
  68. _stprintf_s(g_szConnectString, DB_SW_CONN_WITH_PORT, g_szDBSource, g_dwDBServerPort, g_szDBName);
  69. else
  70. _stprintf_s(g_szConnectString, DB_SS_CONN_WITH_PORT, g_szDBSource, g_dwDBServerPort, g_szDBName, g_szDBAccount, g_szDBPassWord);
  71. }
  72. else
  73. {
  74. if (_tcscmp(g_szDBAccount, _T("")) == 0)
  75. _stprintf_s(g_szConnectString, DB_SW_CONN_WITHOUT_PORT, g_szDBSource, g_szDBName);
  76. else
  77. _stprintf_s(g_szConnectString, DB_SS_CONN_WITHOUT_PORT, g_szDBSource, g_szDBName, g_szDBAccount, g_szDBPassWord);
  78. }
  79. return 0;
  80. }
  81. /************************************************************************/
  82. /* 函数:WriteTextLog[7/28/2016 IT];
  83. /* 描述:写文本日志;
  84. /* 参数:;
  85. /* [IN] :;
  86. /* 返回:void;
  87. /* 注意:;
  88. /* 示例:;
  89. /*
  90. /* 修改:;
  91. /* 日期:;
  92. /* 内容:;
  93. /************************************************************************/
  94. void WriteTextLog(const TCHAR *format, ...)
  95. {
  96. try
  97. {
  98. //static ThreadSection _critSection;
  99. //AutoThreadSection aSection(&_critSection);
  100. // 解析出日志路径;
  101. TCHAR szlogpath[MAX_PATH] = { 0 };
  102. static TCHAR szModulePath[MAX_PATH] = { 0 };
  103. static TCHAR szFna[_MAX_DIR] = { 0 };
  104. if (szModulePath[0] == _T('\0'))
  105. {
  106. TCHAR szDrive[_MAX_DRIVE] = { 0 };
  107. TCHAR szDir[_MAX_DIR] = { 0 };
  108. TCHAR szExt[_MAX_DIR] = { 0 };
  109. ::GetModuleFileName(NULL, szModulePath, sizeof(szModulePath) / sizeof(TCHAR));
  110. _tsplitpath_s(szModulePath, szDrive, szDir, szFna, szExt);
  111. _tcscpy_s(szModulePath, szDrive);
  112. _tcscat_s(szModulePath, szDir);
  113. }
  114. _stprintf_s(szlogpath, _T("%s%s%s.txt"), szModulePath, szFna, CTime::GetCurrentTime().Format("[%Y-%m-%d]"));
  115. // 打开或创建文件;
  116. CStdioFile fp;
  117. if (PathFileExists(szlogpath))
  118. {
  119. if (fp.Open(szlogpath, CFile::modeWrite) == FALSE)
  120. {
  121. return;
  122. }
  123. fp.SeekToEnd();
  124. }
  125. else
  126. {
  127. if (!fp.Open(szlogpath, CFile::modeCreate | CFile::modeWrite))
  128. return;
  129. }
  130. // 格式化前设置语言区域;
  131. TCHAR* old_locale = _tcsdup(_tsetlocale(LC_CTYPE, NULL));
  132. _tsetlocale(LC_CTYPE, _T("chs"));//设定中文;
  133. // 格式化日志内容;
  134. va_list args = NULL;
  135. int len = 0;
  136. TCHAR *buffer = NULL;
  137. va_start(args, format);
  138. // _vscprintf doesn't count. terminating '\0'
  139. len = _vsctprintf_p(format, args);
  140. if (len == -1)
  141. {
  142. goto clear;
  143. }
  144. len++;
  145. buffer = (TCHAR*)malloc(len * sizeof(TCHAR));
  146. _vstprintf_s(buffer, len, format, args); // C4996
  147. // Note: vsprintf is deprecated; consider using vsprintf_s instead
  148. // 将日志内容输入到文件中;
  149. //fp.WriteString(CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S ")));
  150. fp.WriteString(buffer);
  151. fp.WriteString(_T("\n"));
  152. // 关闭文件,释放资源并设置回原语言区域;
  153. free(buffer);
  154. clear:
  155. _tsetlocale(LC_CTYPE, old_locale);
  156. free(old_locale);//还原区域设定;
  157. fp.Close();
  158. }
  159. catch (CException *e)
  160. {
  161. e->ReportError();
  162. e->Delete();
  163. }
  164. }