Check_ParserIni_dll

Author: Copyright � Zhunko
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
Check_ParserIni_dll
//+----------------------------------------------------------------------------+
//|                                                    Check_ParserIni.dll.mq4 |
//|                                                    Copyright © Zhunko      |
//|05.10.2013 - 11.02.2014                             vadim@zhunko.ru         |
//+----------------------------------------------------------------------------+
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ
#property copyright "Copyright © Zhunko"
#property link      "vadim@zhunko.ru"
#property show_inputs
#property strict
//----
#include <ParserIni.mqh> // Çàãîëîâî÷íûé ôàéë áèáëèîòåêè "ParserIni.dll".
//----
input string FileName   = "CheckParser.ini"; // Èìÿ INI-ôàéë.
input string SectionTag = "[]";              // Òåãè îáîçíà÷åíèÿ ðàçäåëà. Ñòðîêà, ãäå óêàçûâàåòñÿ îòêðûâàþùèé è çàêðûâàþùèé èìÿ ðàçäåëà òåãè. Ïðèìåð: "# " èëè "[]".
input bool   Write      = false;             // Çàïèñü â INI-ôàéë.
input bool   Read       = false;             // ×òåíèå èç INI-ôàéëà.
input bool   Clear      = false;             // Î÷èùåíèå INI-ôàéëà.
input bool   Delete     = false;             // Óäàëåíèå INI-ôàéëà.
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
 {
  int    i = 0, j = 0, k = 0, l = 0;
  int    nSize = 0;
  string sComment = "";
  int    a1nOutput[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int    a1nInput[10] = {0};
  int    a2nOutput[3][3] = {1, 2, 3,  4, 5, 6,  7, 8, 9};
  int    a2nInput[3][3] = {0};
  int    a3nOutput[2][3][4] = {1, 2, 3, 4,  5, 6, 7, 8,  9, 10, 11, 12,  21, 22, 23, 24,  25, 26, 27, 28,  29, 30, 31, 32};
  int    a3nInput[2][3][4] = {0};
  double a1dOutput[10] = {1.123, 2.234, 3.345, 4.456, 5.567, 6.678, 7.789, 8.89101, 9.91011, 10.1011};
  double a1dInput[10] = {0};
  double a2dOutput[3][3] = {1.123, 2.234, 3.345,  4.456, 5.567, 6.678,  7.789, 8.89101, 9.91011};
  double a2dInput[3][3] = {0};
  double a3dOutput[2][3][3] = {1.123, 2.234, 3.345,  4.456, 5.567, 6.678,  7.789, 8.89101, 9.91011,  21.123, 22.234, 23.345,  24.456, 25.567, 26.678,  27.789, 28.89101, 29.91011};
  double a3dInput[2][3][3] = {0};
  string a1sOutput[10] = {"AUD", "USD", "GBP", "JPY", "CAD", "NZD", "RUR", "EUR", "ZAR", "CHF"};
  string a1sInput[10];
  string a2sOutput[3][3] = {"AUD", "USD", "GBP",  "JPY", "CAD", "NZD",  "RUR", "EUR", "ZAR"};
  string a2sInput[3][3];
  string a3sOutput[2][3][3] = {"AUD", "USD", "GBP",  "JPY", "CAD", "NZD",  "RUR", "EUR", "ZAR",  "DKK", "SEK", "SGD",  "MXN", "NOK", "HUF",  "PLN", "CNH", "HKD"};
  string a3sInput[2][3][3];
  //==== Èíèöèàëèçàöèÿ ñòðîêîâûõ ìàññèâîâ. ===============================================================================================================================================================================================
  // Ìîæíî èíèöèàëèçèðîâàòü â öèêëå êàæäóþ ÿ÷åéêó. Äëÿ ïðè¸ìà ñòðîê â ìàññèâ ýòî íàäî îáÿçàòåëüíî ñäåëàòü!
  for (i = 0; i < 10; i++) a1sInput[i] = string(i) + "  ";
  for (i = 0, k = 0; i < 3; i++) for (j = 0; j < 3; j++, k++) a2sInput[i][j] = string(k) + "  ";
  for (i = 0, l = 0; i < 2; i++)
   for (j = 0; j < 3; j++)
    for (k = 0; k < 3; k++, l++) a3sInput[i][j][k] = string(l) + "   ";
  //==== Çàïèñü è ïåðåçàïèñü INI-ôàéëà. ==================================================================================================================================================================================================
  if (Write)
   {//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    sComment = sComment + "TEST_WRITE\n\n";
    Comment(sComment);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.4.2. Ôóíêöèÿ îòêðûâàåò INI-ôàéë äëÿ çàïèñè èëè ÷òåíèÿ, ÷èòàåò òåêñò èç ôàéëà â ïàìÿòü, ïðîâåðÿåò òåêñò íà îøèáêè, êîððåêòèðóåò åãî, óäàëÿÿ ëèøíèå ïðîáåëû, êîììåíòèðóÿ íåïðàâèëüíûå ïàðû êëþ÷-çíà÷åíèå.
    //        Íà÷àëî ðàáîòû ñ INI-ôàéëîì äîëæíà íà÷èíàòüñÿ ñ ôóíêöèè "Open()". Çàâåðøàòüñÿ ðàáîòà äîëæíà ôóíêöèåé "Close()".
    ParserOpenW(FileName, SectionTag, true);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.2.2. Ôóíêöèÿ çàïèñûâàåò çàãîëîâîê INI-ôàéëà.
    ParserSetTitleW("Êîíòðîëüíûé ôàéë òåñòîâ."); // Ñòðîêà ñ çàãîëîâêîì.
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.1.2. Ôóíêöèÿ çàïèñûâàåò êîììåíòàðèé.
    ParserSetCommentW("Çàïèñûâàåì ÷èñëî òèïà INT."); // Ñòðîêà ñ êîììåíòàðèåì.
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.3.6.2. Ôóíêöèÿ çàïèñûâàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyIntW("ValueInt", 1234);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.1.2. Ôóíêöèÿ çàïèñûâàåò êîììåíòàðèé.
    ParserSetCommentW("Çàïèñûâàåì ÷èñëî òèïà DOUBLE ñ òî÷íîñòüþ äî 3 çíàêà ïîñëå çàïÿòîé."); // Ñòðîêà ñ êîììåíòàðèåì.
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.3.11.2. Ôóíêöèÿ çàïèñûâàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyDoubleW("ValueDouble", 987.654321, 3);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.1.2. Ôóíêöèÿ çàïèñûâàåò êîììåíòàðèé.
    ParserSetCommentW("Çàïèñûâàåì ñòðîêó."); // Ñòðîêà ñ êîììåíòàðèåì.
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.3.12.2. Ôóíêöèÿ çàïèñûâàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyStringW("ValueString", "Ïðèâåò ìèð!"); // Ñòðîêîâîå çíà÷åíèå.
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.1.2. Ôóíêöèÿ çàïèñûâàåò êîììåíòàðèé.
    ParserSetCommentW("Îòêðûâàåì òðè ðàçäåëà."); // Ñòðîêà ñ êîììåíòàðèåì.
    for (i = 1; i <= 3; i++)
     {//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 4.2.2. Ôóíêöèÿ óñòàíàâëèâàåò îòêðûâàþùèé òåã ðàçäåëà.
      ParserSectionOpenW("Section_" + string(i)); // Èìÿ ðàçäåëà.
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 5.3.6.2. Ôóíêöèÿ çàïèñûâàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
      ParserSetKeyIntW("ValueInt", 1234 + i);
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 5.3.11.2. Ôóíêöèÿ çàïèñûâàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
      ParserSetKeyDoubleW("ValueDouble", 987.654321 + i, 3);
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 5.3.12.2. Ôóíêöèÿ çàïèñûâàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
      ParserSetKeyStringW("ValueString", string(i) + " Ïðèâåò ìèð!");
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     }
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 4.1. Ôóíêöèÿ óñòàíàâëèâàåò çàêðûâàþùèé òåã ðàçäåëà. Ìîæíî íå óñòàíàâëèâàòü, åñëè ïîñëå ïîñëåäíåãî ðàçäåëà íå òðåáóåòñÿ ÷òî-íèáóäü çàïèñàòü, íå âõîäÿùåå â êàêîé-ëèáî ðàçäåë.
    ParserSectionClose();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.4.6.2. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà INT. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyIntArrayW("ArrayInt1", a1nOutput, ArraySize(a1nOutput));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.5.6.2. Ôóíêöèÿ çàïèñûâàåò äâóõìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà INT. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyIntArray2W("ArrayInt2", a2nOutput, ArrayRange(a2nOutput, 0), ArrayRange(a2nOutput, 1));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.6.6.2. Ôóíêöèÿ çàïèñûâàåò òð¸õìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà INT. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyIntArray3W("ArrayInt3", a3nOutput, ArrayRange(a3nOutput, 0), ArrayRange(a3nOutput, 1), ArrayRange(a3nOutput, 2));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.4.11.2. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà DOUBLE. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyDoubleArrayW("ArrayDouble1", a1dOutput, ArraySize(a1dOutput), 5);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.5.11.2. Ôóíêöèÿ çàïèñûâàåò äâóõìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà DOUBLE. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyDoubleArray2W("ArrayDouble2", a2dOutput, ArrayRange(a2dOutput, 0), ArrayRange(a2dOutput, 1), 5);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.6.11.2. Ôóíêöèÿ çàïèñûâàåò òð¸õìåðíûé ìàññèâ ÷èñëîâûõ çíà÷åíèé êëþ÷à òèïà DOUBLE. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyDoubleArray3W("ArrayDouble3", a3dOutput, ArrayRange(a3dOutput, 0), ArrayRange(a3dOutput, 1), ArrayRange(a3dOutput, 2), 5);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.4.13.2. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ MQL4-ñòðîêîâûõ çíà÷åíèé êëþ÷à. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyStringArrayMW("ArrayStr1", a1sOutput, ArraySize(a1sOutput));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.5.13.2. Ôóíêöèÿ çàïèñûâàåò äâóõìåðíûé ìàññèâ MQL4-ñòðîêîâûõ çíà÷åíèé êëþ÷à. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyStringArray2MW("ArrayStr2", a2sOutput, ArrayRange(a2sOutput, 0), ArrayRange(a2sOutput, 1));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 5.6.13.2. Ôóíêöèÿ çàïèñûâàåò òð¸õìåðíûé ìàññèâ MQL4-ñòðîêîâûõ çíà÷åíèé êëþ÷à. Åñëè êëþ÷à íåò, òî îí áóäåò äîïèñàí â êîíåö òåêñòà.
    ParserSetKeyStringArray3MW("ArrayStr3", a3sOutput, ArrayRange(a3sOutput, 0), ArrayRange(a3sOutput, 1), ArrayRange(a3sOutput, 2));
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.2. Ôóíêöèÿ çàêðûâàåò INI-ôàéë.
    ParserClose();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   }
  //==== ×òåíèå èç INI-ôàéëà. ============================================================================================================================================================================================================
  if (Read)
   {//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    sComment = sComment + "TEST_READ\n\n";
    Comment(sComment);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.4.2. Ôóíêöèÿ îòêðûâàåò INI-ôàéë äëÿ çàïèñè èëè ÷òåíèÿ, ÷èòàåò òåêñò èç ôàéëà â ïàìÿòü, ïðîâåðÿåò òåêñò íà îøèáêè, êîððåêòèðóåò åãî, óäàëÿÿ ëèøíèå ïðîáåëû, êîììåíòèðóÿ íåïðàâèëüíûå ïàðû êëþ÷-çíà÷åíèå.
    //        Íà÷àëî ðàáîòû ñ INI-ôàéëîì äîëæíà íà÷èíàòüñÿ ñ ôóíêöèè "Open()". Çàâåðøàòüñÿ ðàáîòà äîëæíà ôóíêöèåé "Close()".
    ParserOpenW(FileName, SectionTag, true);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.1.6.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.1.6.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    Comment(sComment);
    if (ParserGetKeyIntW("ValueInt") != 1234) Alert("6.1.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntW()\".");
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.1.11.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.1.11.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    Comment(sComment);
    if (ParserGetKeyDoubleW("ValueDouble") != 987.654) Alert("6.1.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleW()\".");
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.1.12.1. Ôóíêöèÿ ÷èòàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî ãåíåðèðóåòñÿ èñêëþ÷åíèå.
    sComment = sComment + " 6.1.12.1. Ôóíêöèÿ ÷èòàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî ãåíåðèðóåòñÿ èñêëþ÷åíèå.\n";
    Comment(sComment);
    if (ParserGetKeyStringW("ValueString") != "Ïðèâåò ìèð!") Alert("6.1.12.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringW()\".");
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 2.5.1. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ðàçäåëîâ â INI-ôàéëå ïî èìåíè èëè ïðåôèêñó.
    sComment = sComment + " 2.5.1. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ðàçäåëîâ â INI-ôàéëå ïî èìåíè èëè ïðåôèêñó.\n";
    nSize = ParserSectionsW("");
    if (nSize != 3) Alert(i, " 2.5.1. Îøèáêà â ôóíêöèè \"ParserSectionsW()\". Ïîëó÷åíî íåâåðíîå êîëè÷åñòâî ðàçäåëîâ.");
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    sComment = sComment + "\nÒåñò óñòàíîâêè ñåêöèé.\n";
    Comment(sComment);
    for (i = 1; i <= nSize; i++)
     {//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 2.4.1. Ôóíêöèÿ âîçâðàùàåò èìÿ ðàçäåëà ïî åãî èíäåêñó. Åñëè ðàçäåëîâ íåò, òî ôóíêöèÿ âîçâðàùàåò ïóñòóþ ñòðîêó.
      sComment = sComment + string(i) + " 2.4.1. Ôóíêöèÿ âîçâðàùàåò èìÿ ðàçäåëà ïî åãî èíäåêñó. Åñëè ðàçäåëîâ íåò, òî ôóíêöèÿ âîçâðàùàåò ïóñòóþ ñòðîêó.\n";
      if (ParserSectionByIndexW(i - 1) != ("Section_" + string(i))) Alert(i, " 2.4.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserSectionByIndexW()\".");
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 4.2.2. Ôóíêöèÿ óñòàíàâëèâàåò îòêðûâàþùèé òåã ðàçäåëà.
      ParserSectionOpenW("Section_" + string(i)); // Èìÿ ðàçäåëà.
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //  6.1.6.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
      sComment = sComment + string(i) + " 6.1.6.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà INT è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
      Comment(sComment);
      if (ParserGetKeyIntW("ValueInt") != (1234 + i)) Alert(i, " 6.1.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntW()\".");
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      // 6.1.11.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
      sComment = sComment + string(i) + " 6.1.11.1. Ôóíêöèÿ ÷èòàåò ÷èñëîâîå çíà÷åíèÿ êëþ÷à òèïà DOUBLE è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
      Comment(sComment);
      if (ParserGetKeyDoubleW("ValueDouble") != (987.654 + i)) Alert(i, " 6.1.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleW()\".");
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      //  6.1.12.1. Ôóíêöèÿ ÷èòàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî ãåíåðèðóåòñÿ èñêëþ÷åíèå.
      sComment = sComment + string(i) + " 6.1.12.1. Ôóíêöèÿ ÷èòàåò ñòðîêîâîå çíà÷åíèÿ êëþ÷à è âîçâðàùàåò åãî. Åñëè êëþ÷à íåò, òî ãåíåðèðóåòñÿ èñêëþ÷åíèå.\n";
      Comment(sComment);
      if (ParserGetKeyStringW("ValueString") != (string(i) + " Ïðèâåò ìèð!")) Alert(i, " 6.1.12.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringW()\".");
      //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     }
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 4.1. Ôóíêöèÿ óñòàíàâëèâàåò çàêðûâàþùèé òåã ðàçäåëà ïðè çàïèñè èëè èíèöèàëèçèðóåò ïóñòîé ñòðîêîé èìÿ ðàçäåëà ïðè ÷òåíèè èëè ïåðåçàïèñè.
    ParserSectionClose();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.2.6.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + "\n 6.2.6.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyIntArrayW("ArrayInt1", a1nInput, 10) != 10) Alert(" 6.2.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArrayW()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 10; i++) if (a1nInput[i] != a1nOutput[i]) Alert(i, " 6.2.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArrayW()\".\n", a1nInput[i], " != ", a1nOutput[i]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.3.6.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.3.6.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyIntArray2W("ArrayInt2", a2nInput, 3, 3) != 9) Alert(" 6.3.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArray2W()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 3; i++)
     for (j = 0; j < 3; j++)
      if (a2nInput[i][j] != a2nOutput[i][j]) Alert(i, " ", j, " 6.3.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArray2W()\".\n", a2nInput[i][j], " != ", a2nOutput[i][j]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.4.6.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.4.6.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà INT. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyIntArray3W("ArrayInt3", a3nInput, 2, 3, 4) != 24) Alert(" 6.4.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArray3W()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 2; i++)
     for (j = 0; j < 3; j++)
      for (k = 0; k < 4; k++)
       if (a3nInput[i][j][k] != a3nOutput[i][j][k]) Alert(i, " ", j, " ", k, " 6.4.6.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyIntArray3W()\".\n", a3nInput[i][j][k], " != ", a3nOutput[i][j][k]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.2.11.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.2.11.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyDoubleArrayW("ArrayDouble1", a1dInput, 10) != 10) Alert(" 6.2.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArrayW()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 10; i++) if (a1dInput[i] != a1dOutput[i]) Alert(i, " 6.2.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArrayW()\".\n", a1dInput[i], " != ", a1dOutput[i]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.3.11.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.3.11.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyDoubleArray2W("ArrayDouble2", a2dInput, 3, 3) != 9) Alert(" 6.3.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArray2W()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 3; i++)
     for (j = 0; j < 3; j++)
      if (a2dInput[i][j] != a2dOutput[i][j]) Alert(i, " ", j, " 6.3.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArray2W()\".\n", a2dInput[i][j], " != ", a2dOutput[i][j]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.4.11.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.4.11.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ ÷èñëîâûå çíà÷åíèÿ êëþ÷à òèïà DOUBLE. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyDoubleArray3W("ArrayDouble3", a3dInput, 2, 3, 3) != 18) Alert(" 6.4.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArray3W()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 2; i++)
     for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
       if (a3dInput[i][j][k] != a3dOutput[i][j][k]) Alert(i, " ", j, " ", k, " 6.4.11.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyDoubleArray3W()\".\n", a3dInput[i][j][k], " != ", a3dOutput[i][j][k]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.2.13.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.2.13.1. Ôóíêöèÿ ÷èòàåò â îäíîìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyStringArrayMW("ArrayStr1", a1sInput, 10) != 10) Alert(" 6.2.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArrayMW()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 10; i++) if (a1sInput[i] != a1sOutput[i]) Alert(i, " 6.2.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArrayMW()\".\n", a1sInput[i], " != ", a1sOutput[i]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.3.13.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.3.13.1. Ôóíêöèÿ ÷èòàåò â äâóõìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyStringArray2MW("ArrayStr2", a2sInput, 3, 3) != 9) Alert(" 6.3.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArray2MW()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 3; i++)
     for (j = 0; j < 3; j++)
      if (a2sInput[i][j] != a2sOutput[i][j]) Alert(i, " ", j, " 6.3.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArray2MW()\".\n", a2sInput[i][j], " != ", a2sOutput[i][j]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 6.4.13.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.
    sComment = sComment + " 6.4.13.1. Ôóíêöèÿ ÷èòàåò â òð¸õìåðíûé ìàññèâ MQL4-ñòðîêîâûå çíà÷åíèÿ êëþ÷à. Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ïðî÷èòàííûõ çíà÷åíèé. Åñëè êëþ÷à íåò, òî âîçâðàùàåòñÿ íîëü.\n";
    if (ParserGetKeyStringArray3MW("ArrayStr3", a3sInput, 2, 3, 3) != 18) Alert(" 6.4.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArray3MW()\".\nÊîëè÷åñòâî ïðî÷èòàííûõ ÿ÷ååê íå ñîâïàäàåò ñ ýòàëîíîì!");
    for (i = 0; i < 2; i++)
     for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
       if (a3sInput[i][j][k] != a3sOutput[i][j][k]) Alert(i, " ", j, " ", k, " 6.4.13.1. Îøèáêà ÷òåíèÿ ôóíêöèåé \"ParserGetKeyStringArray3MW()\".\n", a3sInput[i][j][k], " != ", a3sOutput[i][j][k]);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.2. Ôóíêöèÿ çàêðûâàåò INI-ôàéë.
    ParserClose();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   }
  //==== Î÷èùåíèå INI-ôàéëà. =============================================================================================================================================================================================================
  if (Clear)
   {//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    sComment = sComment + "TEST_CLEAR\n\n";
    Comment(sComment);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.4.2. Ôóíêöèÿ îòêðûâàåò INI-ôàéë äëÿ çàïèñè èëè ÷òåíèÿ, ÷èòàåò òåêñò èç ôàéëà â ïàìÿòü, ïðîâåðÿåò òåêñò íà îøèáêè, êîððåêòèðóåò åãî, óäàëÿÿ ëèøíèå ïðîáåëû, êîììåíòèðóÿ íåïðàâèëüíûå ïàðû êëþ÷-çíà÷åíèå.
    //        Íà÷àëî ðàáîòû ñ INI-ôàéëîì äîëæíà íà÷èíàòüñÿ ñ ôóíêöèè "Open()". Çàâåðøàòüñÿ ðàáîòà äîëæíà ôóíêöèåé "Close()".
    ParserOpenW(FileName, SectionTag, true);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 3.1. Ôóíêöèÿ î÷èùàåò áóôåð òåêñòà â ïàðñåðå.
    ParserClearText();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.2. Ôóíêöèÿ çàêðûâàåò INI-ôàéë.
    ParserClose();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   }
  //==== Óäàëåíèå INI-ôàéëà. =============================================================================================================================================================================================================
  if (Delete)
   {//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    sComment = sComment + "TEST_DELETE\n\n";
    Comment(sComment);
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 1.3. Ôóíêöèÿ óäàëÿåò INI-ôàéë.
    ParserDelete();
    //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   }
 }
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ

Comments