//+----------------------------------------------------------------------------+
//| 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