FilterTextTest.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // FilterTextTest.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include "iostream.h"
  5. #include "fstream.h"
  6. #include "..FilterTextFilterText.h"
  7. #include <Shellapi.h>
  8. typedef HRESULT (*LPFNCREATETEXTFILTER)(ITextFilter** ppTextFilter);
  9. ITextFilter* pTextFilter;
  10. void AddFilterWords(char *szFilterWordFile)
  11. {
  12. ifstream ifs(szFilterWordFile, ios::nocreate);
  13. if(!ifs)
  14. {
  15. cout<<"Can't Open FilterWordFile: "<<szFilterWordFile<<"!"<<endl;
  16. return;
  17. }
  18. char szLine[1024];
  19. while(!ifs.eof())
  20. {
  21. ifs.getline(szLine, 1023);
  22. if(ifs.bad())
  23. {
  24. cout<<"Read file error!"<<szFilterWordFile<<"!"<<endl;
  25. return;
  26. }
  27. pTextFilter->AddExpression(szLine);
  28. }
  29. }
  30. void DoTest(char *szTestFile)
  31. {
  32. ifstream ifs(szTestFile, ios::nocreate);
  33. if(!ifs)
  34. {
  35. cout<<"Can't Open FilterTestFile: "<<szTestFile<<"!"<<endl;
  36. return;
  37. }
  38. ofstream ofs("result.txt");
  39. if(!ofs)
  40. {
  41. cout<<"Can't create ResultFile: result.txt!"<<endl;
  42. return;
  43. }
  44. char szLine[1024];
  45. while(!ifs.eof())
  46. {
  47. ifs.getline(szLine, 1023);
  48. if(ifs.bad())
  49. {
  50. cout<<"Read file error!"<<szTestFile<<"!"<<endl;
  51. return;
  52. }
  53. if(pTextFilter->IsTextPass(szLine))
  54. {
  55. ofs<<"Pass "<<szLine<<endl;
  56. }
  57. else
  58. {
  59. ofs<<"Filt "<<szLine<<endl;
  60. }
  61. }
  62. ShellExecute(NULL, "open", "result.txt", NULL, NULL, SW_SHOW);
  63. }
  64. int main(int argc, char* argv[])
  65. {
  66. if(argc != 3)
  67. {
  68. cout<<"Usage: FilterTextTest 过滤信息文件 要测试的文本文件!"<<endl;
  69. return FALSE;
  70. }
  71. HMODULE m_hFilterText;
  72. LPFNCREATETEXTFILTER lpfnCreateTextFilter;
  73. if (!(m_hFilterText = ::LoadLibrary("FilterText.dll")))
  74. {
  75. cout<<"Can't load FilterText.dll!"<<endl;
  76. return FALSE;
  77. }
  78. if (!(lpfnCreateTextFilter = (LPFNCREATETEXTFILTER)GetProcAddress(m_hFilterText, "CreateTextFilter")))
  79. {
  80. FreeLibrary(m_hFilterText);
  81. cout<<"Can't find function CreateTextFilter!"<<endl;
  82. return FALSE;
  83. }
  84. lpfnCreateTextFilter(&pTextFilter);
  85. AddFilterWords(argv[1]);
  86. DoTest(argv[2]);
  87. FreeLibrary(m_hFilterText);
  88. return 0;
  89. }