ZH_Global_Chart_Variable_Lib 0-90105





//+---------------------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                                           ZH_Global_Chart_Variable_Lib 0-90105.mq4|
//|                                                                                                           Copyright © Zhunko                      |
//|04.09.2008 - 05.01.2009                                                                                    MF ZHUNKO vadim@zhunko.ru               |
//+---------------------------------------------------------------------------------------------------------------------------------------------------+
//| Áèáëèîòåêà ïðåäíàçíà÷åíà äëÿ ðàáîòû ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè.                                                                       |
//| Ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ (ãðàôè÷åñêèé îáúåêò), âèäèìàÿ äëÿ ïðîãðàìì òîëüêî îäíîãî îêíà.                                                  |
//| ÂÍÈÌÀÍÈÅ!!! Êîëè÷åñòâî çàïèñûâàåìûõ çíàêîâ ñ ó÷¸òîì ðàçäåëèòåëåé âî âñåõ ôóíêöèÿõ íå ìîæåò ïðåâûøàòü 62-õ.                                        |
//+---------------------------------------------------------------------------------------------------------------------------------------------------+
//+--- Ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè.------------------------------------------------------------------------------------------------+
//| 1. Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                        |
//| 2. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                               |
//| 3. Ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                       |
//| 4. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                              |
//+--- Ôóíêöèè ñ ãðàôè÷åñêèìè ìàññèâàìè. -------------------------------------------------------------------------------------------------------------+
//| 5. Âîçâðàùàåò èíäåêñû ïåðâîãî íàéäåííîãî ýëåìåíòà â ãðàôè÷åñêîì ìàññèâå.                                                                          |
//| 6. Ôóíêöèÿ óìåíüøàåò ðàçìåð ìàññèâà íà îäíó çàäàííóþ ÿ÷åéêó.                                                                                      |
//| 7. Ôóíêöèÿ âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà.                                                                 |
//| 8. Ôóíêöèÿ ìåíÿåò ðàçìåð óêàçàííîãî èçìåðåíèÿ ãðàôè÷åñêîãî ìàññèâà.                                                                               |
//| 9. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå äàííûõ äâîéíîé òî÷íîñòè.                                                        |
//|10. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñ äàííûìè äâîéíîé òî÷íîñòè.                                                               |
//|11. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå ñòðîêîâûõ äàííûõ.                                                               |
//|12. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñî ñòðîêîâûìè äàííûìè.                                                                    |
//+--- Ôóíêöèè ñ ãðàôè÷åñêèìè ôàéëàìè. ---------------------------------------------------------------------------------------------------------------+
//|13. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.                                    |
//|14. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.                                    |
//|15. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ.                                              |
//|16. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ.                                                            |
//|17. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ.                                           |
//|18. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ.                                                         |
//|19. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.                                                            |
//|20. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.                                                             |
//|21. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.                                                                         |
//|22. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.                                                                          |
//|23. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ â ãðàôè÷åñêèé ôàéë.                                                                      |
//|24. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé ìàññèâ ñî ñòðîêîâûìè äàííûìè â ãðàôè÷åñêèé ôàéë.                                                                  |
//+--- Ñëóæåáíûå ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè, ìàññèâàìè è ôàéëàìè. ----------------------------------------------------------------+
//|25. Ôóíêöèÿ êîíòðîëÿ íàëè÷èÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                                    |
//|26. Ôóíêöèÿ óäàëåíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                                            |
//|27. Ôóíêöèÿ âîçâðàùàåò èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ïî ïîðÿäêîâîìó íîìåðó â ñïèñêå ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.                     |
//|28. Ôóíêöèÿ óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.                                                                                             |
//|29. Ôóíêöèÿ âîçâðàùàåò îáùåå êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.                                                                         |
//|30. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                                     |
//+---------------------------------------------------------------------------------------------------------------------------------------------------+
//|                                                             ÈÇÌÅÍÅÍÈß è ÄÎÏÎËÍÅÍÈß.                                                               |
//| 1.Èçìåíåíèÿ â ZH_Global_Chart_Variable_Lib 0-80914 îò 14.09.2008.                                                                                 |
//| 1.1.Èçìåíåíû íàçâàíèÿ ôóíêöèé. Ïðèâåäåíû ÷èòàåìîìó è ëîãè÷íîìó âèäó.                                                                              |
//| 1.2.Èñïðàâëåíà îøèáêà â ôóíêöèè "GlobalChartVariableDel()".  íåêîòîðûõ ñëó÷àÿõ ïðèâîäèëà ê çàâèñàíèþ ÌÒ4.                                        |
//| 1.3.Óñîâåðøåíñòâîâàíà ôóêöèÿ "ChartDoubleArraySet()". Òåïåðü íå íàäî óêàçûâàòü ðàçìåð ìàññèâà, åñëè îí ñóùåñòâóåò.                                |
//| 1.4.Äîáàâëåí íîâûé ïàðàìåòð â ôóêöèþ "ChartDoubleArraySet()" äëÿ çàïîëíåíèÿ ãðàôè÷åñêîãî ìàññèâà óìîë÷àòåëüíûìè çíà÷åíèÿìè (èíèöèàëèçàöèÿ).       |
//| 1.5.Äîáàâëåíû ôóíêöèè "ChartStringArraySet()" è "ChartStringArrayGet()" äëÿ çàïèñè è ÷òåíèÿ ñòðîêîâûõ äàííûõ â ãðàôè÷åñêèõ ìàññèâàõ.              |
//| 1.6.Äîáàâëåíû ôóíêöèè "FileChartWriteStringArray1()", "FileChartWriteStringArray2()", "FileChartReadStringArray1()", "FileChartReadStringArray2()"|
//|     äëÿ çàïèñè è ÷òåíèÿ ñòðîêîâûõ äàííûõ â ãðàôè÷åñêèõ ôàéëàõ.                                                                                    |
//| 2.Èçìåíåíèÿ â ZH_Global_Chart_Variable_Lib 0-80919 îò 19.09.2008.                                                                                 |
//| 2.1.Èñïðàâëåíà îøèáêà â ôóíêöèÿõ "ChartDoubleArrayGet()" è "ChartStringArrayGet()". Âîçâðàùàëñÿ íîëü ïðè îáðàùåíèè ê ïîñëåäíåé ÿ÷åéêè âòîðîãî     |
//|     èçìåðåíèÿ â ÿ÷åéêàõ ïåðâîãî èçìåðåíèÿ.                                                                                                        |
//| 2.2.Äîáàâëåíà ôóíêöèÿ "ChartArrayDownSize()" óìåíüøàþùàÿ ðàçìåð ìàññèâà íà îäíó çàäàííóþ ÿ÷åéêó.                                                  |
//| 2.3.Äîáàâëåíà ôóíêöèÿ "ChartArrayBsearch()" ïîèñêà çàäàííîãî ýëåììåíòà.                                                                           |
//| 2.4.Äîáàâëåíû óñëîâèÿ âûõîäà èç ÷èòàþùèõ è èçìåíÿþùèõ ôóíêöèé ïî îøèáêå (åñëè íåò îáúåêòà äëÿ ÷òåíèÿ).                                            |
//| 3.Èçìåíåíèÿ â ZH_Global_Chart_Variable_Lib 0-81111 îò 11.11.2008.                                                                                 |
//| 3.1.Óñòðàíåíà îøèáêà â ôóíêöèè "GlobalChartVariablesDeleteAll()". Ïðè óäàëåíèè âñåõ ãðàôè÷åñêèõ ïåðåìåííûõ ïî øàáëîíó ôóíêöèÿ çàöèêëèâàëàñü.      |
//|     Ïðîèçâåäåíà îïòèìèçàöèÿ ôóíêöèè "GlobalChartVariablesDeleteAll()".                                                                            |
//| 3.2.Óñòðàíåíà îøèáêà â ôóíêöèè "ChartStringingArrayGet()". Ïðè ÷òåíèè ïóñòîé ÿ÷åéêè âîçâðàùàëàñü âñÿ ñòðîêà ïîñëå ýòîé ÿ÷åéêè.                    |
//| 3.3.Èçìåíåíî âîçâðàùàåìîå çíà÷åíèå â ôóíêöèè "ChartDoubleArrayGet()" â ñëó÷àå îøèáêè ñ "-1" íà "0" (íîëü).                                        |
//| 4.Èçìåíåíèÿ â ZH_Global_Chart_Variable_Lib 0-90105 îò 05.01.2009.                                                                                 |
//| 4.1.Èñïðàâëåíà è îïòèìèçèðîâàíà ôóíêöèÿ "GlobalChartVariablesDeleteAll()".                                                                        |
//+---------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2008 Zhunko"
#property link      "vadim@zhunko.ru"
#property library
//ææææ Ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//==========================================================================================================================================================================================================
// 1. Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.===============================================================================================================================
// Âîçâðàùàåò ÷èñëîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
double GlobalChartDoubleVariableGet (string Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  return (StrToDouble (ObjectDescription (Name)));
 }
//==========================================================================================================================================================================================================
// 2. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.======================================================================================================================
// Óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartDoubleVariableSet (string Name,      // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
                                   double Value,     // ×èñëîâîå çíà÷åíèå.
                                   int    Precision) // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
 {
  int i;
  //----
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartDoubleVariableSet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartDoubleVariableSet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartDoubleVariableSet()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartDoubleVariableSet()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, DoubleToStr (Value, Precision), 10, "Areal", EMPTY));
 }
//==========================================================================================================================================================================================================
// 3. Ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.==============================================================================================================================
// Âîçâðàùàåò ñòðîêîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé èëè "ERROR" â ñëó÷àå îøèáêè.
string GlobalChartStringVariableGet (string Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  if (ObjectFind (Name) == -1) // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableGet()\". Ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableGet()\".\nÃëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return ("ERROR");
   }
  return (ObjectDescription (Name));
 }
//==========================================================================================================================================================================================================
// 4. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=====================================================================================================================
// Óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartStringVariableSet (string Name,  // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
                                   string Value) // Ñòðîêîâîå çíà÷åíèå.
 {
  int i;
  //----
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableSet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableSet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableSet()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartStringVariableSet()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break; // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, Value, 10, "Areal", EMPTY));
 }
//==========================================================================================================================================================================================================
//ææææ Ôóíêöèè ñ ãðàôè÷åñêèìè ìàññèâàìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//==========================================================================================================================================================================================================
// 5. Âîçâðàùàåò èíäåêñû ïåðâîãî íàéäåííîãî ýëåìåíòà â ãðàôè÷åñêîì ìàññèâå.=================================================================================================================================
// Âîçâðàùàåò èíäåêñû ïåðâîãî íàéäåííîãî ýëåìåíòà â ãðàôè÷åñêîì ìàññèâå ÷åðåç ìàññèâ-ïàðàìåòð. Ïîèñê ïðîèçâîäèòñÿ âî âñåõ èçìåðåíèÿõ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool ChartArrayBsearch (string Name,        // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                        string Value,       // Çíà÷åíèå äëÿ ïîèñêà.
                        int&   ArIndexes[]) // Ìàññèâ äëÿ êîîðäèíàò íàéäåííîãî ýëåìåíòà.
                                             // ArIndexes[0] - êîîðäèíàòà â ïåðâîì èçìåðåíèè.
                                             // ArIndexes[1] - êîîðäèíàòà âî âòîðîì èçìåðåíèè.
 {
  int    i, j, k;                               // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;                                // Äëèíà âñåãî òåêñòà.
  int    Size0;                                 // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  int    Size1;                                 // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  string Text = ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
  string TextSymbol = "";                       // Ñòðîêîâûé ñèìâîë.
  string Word = "";                             // Êîíòðîëëèðóåìîå ñëîâî.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.----------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayBsearch()\". Ãðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayBsearch()\".\nÃðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (false);
   }
  //----Ïîèñê êîîðäèíàò ýëåìåíòà.-------------------------------------------------------------------------------
  Length = StringLen (Text);                    // Äëèíà òåêñòà.
  for (i = 0, j = 0, k = 0; i < Length; i++)    // Öèêë ïî ýëåìåíòàì òåêñòà.
   {
    TextSymbol = StringSubstr (Text, i, 1);     // Ñèìâîë.
    if (TextSymbol == ";" || TextSymbol == "|") // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
     {
      if (Value == Word)                        // Åñëè ñëîâî íàøëîñü.
       {
        ArrayResize (ArIndexes, 2);             // Ìåíÿåì ðàçìåð ìàññèâà ïîä äàííûå êîîðäèíàò.
        ArIndexes[0] = j;                       // Êîîðäèíàòà â ïåðâîì èçìåðåíèè.
        ArIndexes[1] = k;                       // Êîîðäèíàòà âî âòîðîì èçìåðåíèè.
        return (true);                          // Îïåðàöèÿ óäàëàñü.
       }
      k++;                                      // Ñ÷¸ò÷èê ÿ÷ååê âòîðîãî èçìåðåíèÿ.
      Word = "";                                // Èíèöèàëèçèðóåì êîíòðîëëèðóåìîå ñëîâî ïóñòîé ñòðîêîé.
     }
    else Word = Word + TextSymbol;              // Ñèíòåçèðóåì ñëîâî.
    if (TextSymbol == "|")                      // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. 
     {
      j++;                                      // Ñ÷¸ò÷èê ÿ÷ååê ïåðâîãî èçìåðåíèÿ.
      k = 0;                                    // Îáíóëÿåì ñ÷¸ò÷èê ÿ÷ååê âòîðîãî èçìåðåíèÿ.
     }
   }
  return (false);
 }
//==========================================================================================================================================================================================================
// 6. Óìåíüøàåò ðàçìåð ìàññèâà íà îäíó çàäàííóþ ÿ÷åéêó.=====================================================================================================================================================
// Ïðè óñïåøíîì âûïîëíåíèè ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî âñåõ ýëåìåíòîâ, ñîäåðæàùèõñÿ â ìàññèâå ïîñëå èçìåíåíèÿ ðàçìåðà, â ïðîòèâíîì ñëó÷àå âîçâðàùàåò -1, è ìàññèâ íå ìåíÿåò ðàçìåðû.
int ChartArrayDownSize (string Name,       // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                        int    RangeIndex, // Èíäåêñ èçìåðåíèÿ.
                        int    Position)   // Íîìåð ÿ÷åéêè, íà êîòîðóþ áóäåò óìåíüøåí ðàçìåð ìàññèâà.
 {
  int    i, j, k, l;                            // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;                                // Äëèíà âñåãî òåêñòà.
  int    Size0;                                 // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  int    Size1;                                 // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  string Text = "|" + ObjectDescription (Name); // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
  string NewText = "";                          // Íîâàÿ ñòðîêà ñ ìàññèâîì íîâîãî ðàçìåðà.
  string TextSymbol = "";                       // Ñòðîêîâûé ñèìâîë.
  //----Âû÷èñëÿåì ðàçìåð ñóùåñòâóþùåãî ìàññèâà.------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);                          // Äëèíà òåêñòà.
  for (i = 0, j = 0, k = 0; i < Length; i++)          // Öèêë ïî ýëåìåíòàì òåêñòà.
   {
    TextSymbol = StringSubstr (Text, i, 1);           // Ñèìâîë.
    if (TextSymbol == "|") j++;                       // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
    if (TextSymbol == ";" || TextSymbol == "|") k++;  // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
   }
  Size0 = j;                                          // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  Size1 = k / j;                                      // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\". Ãðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\".\nÃðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  if (RangeIndex < 0 || 1 < RangeIndex)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\". Íå âåðíî âûáðàí ïàðàìåòð \"RangeIndex\". RangeIndex = ", RangeIndex);
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\".\nÍå âåðíî âûáðàí ïàðàìåòð \"RangeIndex\". RangeIndex = ", RangeIndex);
    return (-1);
   }
  if (Position < 0 || Position > (Size1 - 1))
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\". Íå âåðíî âûáðàí ïàðàìåòð \"Position\". Position = ", RangeIndex);
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayDownSize()\".\nÍå âåðíî âûáðàí ïàðàìåòð \"Position\". Position = ", RangeIndex);
    return (-1);
   }
  //----Åñëè òðåáóåòñÿ èçìåíèòü ïåðâîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
  if (RangeIndex == 0)
   {
    for (i = 0, j = -1, l = 0; i < Length; i++)        // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);          // Ñèìâîë.
      if (TextSymbol == "|") j++;                      // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè.
      if (j == Position) continue;                     // Åñëè ñîâïàëà ÿ÷åéêà ñ çàäàííîé, íà÷èíàåì íîâóþ èòåðàöèþ.
      NewText = NewText + TextSymbol;                  // Ñóììèðóåì íîâóþ ñòðîêó.
      if (TextSymbol == ";" || TextSymbol == "|") l++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
     }
    // Ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
    if (ObjectSetText (Name, StringSubstr (NewText, 1), 10, "Areal", EMPTY) == true) return (l);
   }
  //----Åñëè òðåáóåòñÿ èçìåíèòü âòîðîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
  if (RangeIndex == 1)
   {
    for (i = 0, k = -1, l = 0; i < Length; i++)          // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Ñèìâîë.
      if (TextSymbol == "|") k = -1;                     // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè.
      if (TextSymbol == "|" || TextSymbol == ";") k++;   // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè.
      if ((k == Position && TextSymbol != "|") || (Position == 0 && k == 1 && TextSymbol == ";")) continue; // Åñëè ñîâïàëà ÿ÷åéêà ñ çàäàííîé, íà÷èíàåì íîâóþ èòåðàöèþ.
      NewText = NewText + TextSymbol;                    // Ñóììèðóåì íîâóþ ñòðîêó.
      if (TextSymbol == "|" || TextSymbol == ";") l++;   // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
     }
    // Ìåíÿåì ñâîéñòâà îáúåêòà. Îáðåçàåì ñòðîêó è ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
    if (ObjectSetText (Name, StringSubstr (NewText, 1), 10, "Areal", EMPTY) == true) return (l);
   }
  return (-1);
 }
//==========================================================================================================================================================================================================
// 7. Ôóíêöèÿ âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà.========================================================================================================================
// Âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà, â ïðîòèâíîì ñëó÷àå "-1".
int ChartArrayRange (string Name,       // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                     int    RangeIndex) // Èíäåêñ èçìåðåíèÿ.
 {
  int    i, j, k;                                     // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;                                      // Äëèíà âñåãî òåêñòà.
  string Text = "|" + ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
  string TextSymbol = "";                             // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayRange()\". Ãðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayRange()\".\nÃðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  if (RangeIndex < 0 || 1 < RangeIndex)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayRange()\". Íå âåðíî âûáðàí ïàðàìåòð \"RangeIndex\". RangeIndex = ", RangeIndex);
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayRange()\".\nÍå âåðíî âûáðàí ïàðàìåòð \"RangeIndex\". RangeIndex = ", RangeIndex);
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);                          // Äëèíà òåêñòà.
  for (i = 0, j = 0, k = 0; i < Length; i++)          // Öèêë ïî ýëåìåíòàì òåêñòà.
   {
    TextSymbol = StringSubstr (Text, i, 1);           // Ñèìâîë.
    if (TextSymbol == "|") j++;                       // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
    if (TextSymbol == ";" || TextSymbol == "|") k++;  // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
   }
  if (RangeIndex == 0) return (j);                    // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ â ïåðâîì èçìåðåíèè.
  if (RangeIndex == 1) return ((k - 1) / j);          // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ âî âòîðîì èçìåðåíèè.
  return (-1);
 }
//==========================================================================================================================================================================================================
// 8. Ôóíêöèÿ ìåíÿåò ðàçìåð óêàçàííîãî èçìåðåíèÿ ãðàôè÷åñêîãî ìàññèâà.======================================================================================================================================
// Ïðè óñïåøíîì âûïîëíåíèè ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî âñåõ ýëåìåíòîâ, ñîäåðæàùèõñÿ â ìàññèâå ïîñëå èçìåíåíèÿ ðàçìåðà, â ïðîòèâíîì ñëó÷àå âîçâðàùàåò -1, è ìàññèâ íå ìåíÿåò ðàçìåðû.
int ChartArrayResize (string Name,       // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                      string Default,    // Ñòðîêîâîå çíà÷åíèå ïî óìîë÷àíèþ äëÿ ÿ÷ååê â ñëó÷àå óâåëè÷åíèÿ ðàçìåðà ìàññèâà.
                      int    RangeIndex, // Èíäåêñ èçìåðåíèÿ.
                      int    NewSize)    // Íîâûé ðàçìåð.
 {
  int    i, j, k, l;                                  // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;                                      // Äëèíà âñåãî òåêñòà.
  int    Size0;                                       // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  int    Size1;                                       // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  string StringSize1 = "";                            // Ñòðîêà äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
  string Text = "|" + ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
  string TextSymbol = "";                             // Ñòðîêîâûé ñèìâîë.
  // Ìàññèâû.
  string ArraySize0[];                                // Òåõíè÷åñêèé ìàññèâ äëÿ ñòðîê âòîðîãî èçìåðåíèÿ.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Ãðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÃðàôè÷åñêèé ìàññèâ ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  if (RangeIndex < 0 || 1 < RangeIndex)               // Êîíòðîëü ïàðàìåòðà "Èíäåêñ èçìåðåíèÿ".
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Èíäåêñ èçìåðåíèÿ âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé. RangeIndex = ", RangeIndex);
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÈíäåêñ èçìåðåíèÿ âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé.\nRangeIndex = ", RangeIndex);
    return (-1);
   }
  if (NewSize < 0)                                    // Êîíòðîëü ïàðàìåòðà "Íîâûé ðàçìåð".
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Íîâûé ðàçìåð âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé. NewSize = ", NewSize);
    Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÍîâûé ðàçìåð âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé.\nNewSize = ", NewSize);
    return (-1);
   }
  // Âû÷èñëÿåì ðàçìåð ñóùåñòâóþùåãî ìàññèâà.
  Length = StringLen (Text);                          // Äëèíà òåêñòà.
  for (i = 0, j = 0, k = 0; i < Length; i++)          // Öèêë ïî ýëåìåíòàì òåêñòà.
   {
    TextSymbol = StringSubstr (Text, i, 1);           // Ñèìâîë.
    if (TextSymbol == "|") j++;                       // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
    if (TextSymbol == ";" || TextSymbol == "|") k++;  // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
   }
  Size0 = j;                                          // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  Size1 = (k - 1) / j;                                // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  //----Åñëè òðåáóåòñÿ èçìåíèòü ïåðâîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
  if (RangeIndex == 0)
   {
    if (NewSize < Size0)                              // Åñëè íîâûé ðàçìåð ìåíüøå, ÷åì ñóùåñòâóþùèé.
     {
      for (i = 0, j = -1; i < Length; i++)            // Öèêë ïî ýëåìåíòàì òåêñòà.
       {
        TextSymbol = StringSubstr (Text, i, 1);       // Ñèìâîë.
        if (TextSymbol == "|") j++;                   // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè.
        // Åñëè ñîâïàë íîâûé ðàçìåð ñ òåêóùèì ðàçäåëèòåëåì. Îáðåçàåì ñòðîêó è ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
        if (j == NewSize) if (ObjectSetText (Name, StringSubstr (Text, 1, i - 1), 10, "Areal", EMPTY) == true) return (j * Size1);
       }
     }
    if (NewSize == Size0) return (k - 1);             // Åñëè íîâûé ðàçìåð ðàâåí ñóùåñòâóþùåìó.
    if (NewSize > Size0)                              // Åñëè íîâûé ðàçìåð áîëüøå, ÷åì ñóùåñòâóþùèé.
     {
      StringSize1 = "|";                              // Èíèöèàëèçèðóåì ïåðåìåííóþ ñòðîêè äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
      for (i = 0; i < Size1; i++)                     // Ñèíòåçèðóåì âñþ ñòðîêó îäíîãî íîâîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
       {
        if (i == (Size1 - 1)) StringSize1 = StringSize1 + Default; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
        else StringSize1 = StringSize1 + Default + ";";
       }
      Text = ObjectDescription (Name);
      for (i = 0; i < (NewSize - Size0); i++) Text = Text + StringSize1;
      // Êîíòðîëü íà äëèíó çàïèñè ìàññèâà ñ íîâûì ðàçìåðîì.
      if (StringLen (Text) > 62)
       {
        Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
      if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return ((Size0 + i) * Size1); // Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
     }
   }
  //----Åñëè òðåáóåòñÿ èçìåíèòü âòîðîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
  if (RangeIndex == 1)
   {
    if (NewSize < Size1)                                              // Åñëè íîâûé ðàçìåð ìåíüøå, ÷åì ñóùåñòâóþùèé.
     {
      ArrayResize (ArraySize0, Size0);                                // Èçìåíÿåì ðàçìåð òåõíè÷åñêîãî ìàññèâà ïî ðàçìåð ãðàôè÷åñêîãî ìàññèâà â ïåðâîì èçìåðåíèè.
      for (i = 0; i < Size0; i++) ArraySize0[i] = "";                 // Èíèöèàëèçèðóåì òåõíè÷åñêèé ìàññèâ ïóñòûìè ñòðîêàìè.
      for (i = 0, j = -1, l = 0; i < Length; i++)                     // Öèêë ïî ýëåìåíòàì òåêñòà.
       {
        TextSymbol = StringSubstr (Text, i, 1);                       // Ñèìâîë.
        if (TextSymbol == "|")                                        // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. 
         {
          j++;                                                        // Ñ÷èòàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
          k = 0;                                                      // Îáíóëÿåì ñ÷¸ò÷èê ðàçäåëèòåëåé âòîðîãî èçìåðåíèÿ.
         }
        if (TextSymbol == ";" || TextSymbol == "|")                   // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
         {
          k++;                                                        // Ñ÷èòàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
          if (k <= NewSize) l++;                                      // Ñ÷èòàåì âñå íîâûå ýëåìåíòû.
         }
        if (k <= NewSize) ArraySize0[j] = ArraySize0[j] + TextSymbol; // Ñèíòåçèðóåì ñòðîêó ïåðâîãî èçìåðåíèÿ â ïðåäåëàõ íîâîãî ðàçìåðà âòîðîãî èçìåðåíèÿ.
       }
      //  ïåðâîé ÿ÷åéêè òåõíè÷åñêîãî ìàññèâà ñèíòåçèðóåì âñþ íîâóþ ñòðîêó äëÿ íîâîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
      for (i = 1; i < Size0; i++) ArraySize0[0] = ArraySize0[0] + ArraySize0[i];
      // Îòðåçàåì ñëóæåáíûé ñèìâîë ñïåðåäè. Ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
      if (ObjectSetText (Name, StringSubstr (ArraySize0[0], 1, 0), 10, "Areal", EMPTY) == true) return (l);
     }
    if (NewSize == Size1) return (k - 1);                             // Åñëè íîâûé ðàçìåð ðàâåí ñóùåñòâóþùåìó.
    if (NewSize > Size1)                                              // Åñëè íîâûé ðàçìåð áîëüøå, ÷åì ñóùåñòâóþùèé.
     {
      ArrayResize (ArraySize0, Size0);                                // Èçìåíÿåì ðàçìåð òåõíè÷åñêîãî ìàññèâà ïî ðàçìåð ãðàôè÷åñêîãî ìàññèâà â ïåðâîì èçìåðåíèè.
      for (i = 0; i < Size0; i++) ArraySize0[i] = "";                 // Èíèöèàëèçèðóåì òåõíè÷åñêèé ìàññèâ ïóñòûìè ñòðîêàìè.
      Text = "|" + ObjectDescription (Name);                          // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
      Length = StringLen (Text);                                      // Äëèíà òåêñòà.
      for (i = 0, j = -1, k = 0; i < Length; i++)                     // Öèêë ïî ýëåìåíòàì òåêñòà.
       {
        TextSymbol = StringSubstr (Text, i, 1);                       // Ñèìâîë.
        if (TextSymbol == "|") j++;                                   // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.  Ñ÷èòàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
        if (TextSymbol == ";" || TextSymbol == "|") k++;              // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
        ArraySize0[j] = ArraySize0[j] + TextSymbol;                   // Ñèíòåçèðóåì ñòðîêó ïåðâîãî èçìåðåíèÿ â ïðåäåëàõ íîâîãî ðàçìåðà âòîðîãî èçìåðåíèÿ.
       }
      StringSize1 = ";";                                              // Èíèöèàëèçèðóåì ïåðåìåííóþ ñòðîêè äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
      for (i = 0, l = 0; i < (NewSize - Size1); i++, l++)             // Ñèíòåçèðóåì ÷àñòü ñòðîêè íîâîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
       {
        if (i == (NewSize - Size1 - 1)) StringSize1 = StringSize1 + Default; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
        else StringSize1 = StringSize1 + Default + ";";
       }
      // Ñèíòåçèðóåì âñþ ñòðîêó îäíîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
      for (i = 0; i < Size0; i++) ArraySize0[i] = ArraySize0[i] + StringSize1;
      //  ïåðâîé ÿ÷åéêè òåõíè÷åñêîãî ìàññèâà ñèíòåçèðóåì âñþ íîâóþ ñòðîêó äëÿ íîâîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
      for (i = 1; i < Size0; i++) ArraySize0[0] = ArraySize0[0] + ArraySize0[i];
      // Îòðåçàåì ñëóæåáíûé ñèìâîë ñïåðåäè.
      Text = StringSubstr (ArraySize0[0], 1, 0);
      if (StringLen (Text) > 62)
       {
        Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
      // Ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
      if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (k + l * Size0);
     }
   }
  return (-1);
 }
//==========================================================================================================================================================================================================
// 9. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå äàííûõ äâîéíîé òî÷íîñòè.===============================================================================================================
// Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, òî ïîñëåäíèå ïàðàìåòðû (Size0, Size1) êîëè÷åñòâà ýëåìåíòîâ â ïåðâîì è âòîðîì èçìåðåíèÿõ óêàçûâàòü íå îáÿçàòåëüíî.
// Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ìàññèâ. Ìîæíî çàïèñûâàòü öåëûå è äâîéíîé òî÷íîñòè ÷èñëà.
// Âûáîð ïðîèçâîäèòñÿ ïàðàìåòðîì "Precision".  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool ChartDoubleArraySet (string Name,      // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                          double Value,     // ×èñëîâîå çíà÷åíèå äëÿ âíåñåíèÿ èçìåíåíèé â ìàññèâå.
                          double Default,   // ×èñëîâîå çíà÷åíèå ïî óìîë÷àíèþ äëÿ îñòàëüíûõ ÿ÷ååê.
                          int    Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
                          int    Cell0,     // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                          int    Cell1,     // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
                          int    Size0,     // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ.
                          int    Size1)     // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ.
 {
  int    i, j, k;         // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    EndStr1;         // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà.
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    Size_0;          // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
  int    Size_1;          // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
  int    StartStr2;       // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
  string Text = "";       // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Ñëèøêîì äëèííîå èìÿ ìàññèâà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÑëèøêîì äëèííîå èìÿ ìàññèâà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  //----Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸ì íîâûé ñ îäíîé çàïîëíåííîé ÿ÷åéêîé. Âñå îñòàëüíûå çàïîëíÿåì íóëÿìè.---------------------------
  if (ObjectFind (Name) == -1)
   {// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
    if ((2 * Size0 * Size1 - 1) > 62) // Êîíòðîëü ìàêñèìàëüíî âîçìîæíîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (false);
     }
    if (Cell0 >= Size0)
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÍîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      return (false);
     }
    if (Cell1 >= Size1)
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÍîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      return (false);
     }
    for (i = 0; i < Size0; i++)                              // Öèêë ïåðâîãî èçìåðåíèÿ.
     {
      for (j = 0; j < Size1; j++)                            // Öèêë âòîðîãî èçìåðåíèÿ.
       {
        k++;                                                 // Ñ÷¸ò÷èê âñåõ ýëåìåíòîâ.
        if (i == Cell0 && j == Cell1) Text = Text + DoubleToStr (Value, Precision); // Åñëè àäðåñ ñîâïàë, çàíîñèì íîâîå çíà÷åíèå.
        else Text = Text + DoubleToStr (Default, Precision); // Âî âñå îñòàëüíûå ÿ÷åéêè çàíîñèì íóëè.
        if (j != (Size1 - 1)) Text = Text + ";";             // Óñòàíàâëèâàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
        else if (k != Size0 * Size1) Text = Text + "|";      // Óñòàíàâëèâàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
       }
     }
   }
  //----Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, ñíà÷àëà ïðîâåðÿåì íà ñîîòâåòñòâèå ðàçìåðîâ èçìåðåíèé.-----------------------------------------------------
  if (ObjectFind (Name) != -1)
   {
    Text = "|" + ObjectDescription (Name) + ";";         // Âåñü òåêñò.
    Length = StringLen (Text);                           // Äëèíà òåêñòà.
    for (i = 0, j = 0, k = 0; i < Length; i++)           // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Ñèìâîë.
      if (TextSymbol == "|") j++;                        // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
      if (TextSymbol == ";" || TextSymbol == "|") k++;   // Ïðîâåðÿåì íà ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ.
     }
    Size_0 = j;           // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
    Size_1 = (k - 1) / j; // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
    if (Size_0 <= Cell0)  // Êîíòðîëü ðàçìåðíîñòè ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà è çàÿâëåííîãî ïàðàìåòðà íîìåðà ÿ÷åéêè â ïåðâîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell0\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell0\".");
      return (false);
     }
    if (Size_1 <= Cell1)  // Êîíòðîëü ðàçìåðíîñòè ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà è çàÿâëåííîãî ïàðàìåòðà íîìåðà ÿ÷åéêè âî âòîðîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell1\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartDoubleArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell1\".");
      return (false);
     }
    // Èùèì íîìåðà ïîçèöèé äî è ïîñëå ÷èñëà.
    for (i = 0, k = 0; i < Length; i++)                  // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Òåêóùèé ñèìâîë.
      if (TextSymbol == ";" || TextSymbol == "|")        // Èùèì ðàçäåëèòåëè.
       {
        if (k == (Cell0 * Size_1 + Cell1))               // Åñëè ñîâïàë íîìåð ðàçäåëèòåëÿ ñ íîìåðîì èñêîìîé ïîçèöèè.
         {
          EndStr1 = i;                                   // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
          break;                                         // Âûõîäèì èç öèêëà.
         }
        k++;                                             // Íîìåð ðàçäåëèòåëÿ.
       }
     }
    for (i++; i < Length; i++)                           // Ïðîäîëæàåì öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Òåêóùèé ñèìâîë.
      if (TextSymbol == ";" || TextSymbol == "|")        // Ñëåäóþùèé ðàçäåëèòåëü.
       {
        StartStr2 = i;                                   // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
        break;                                           // Âûõîäèì èç öèêëà.
       }
     }
    // Ñèíòåçèðóåì íîâóþ ñòðîêó.
    Text = StringSubstr (Text, 0, EndStr1 + 1) + DoubleToStr (Value, Precision) + StringSubstr (Text, StartStr2, 0);
    Text = StringSubstr (Text, 1, StringLen (Text) - 2); // Óáèðàåì ïåðâûé è ïîñëåäíèé ñëóæåáíûå ðàçäåëèòåëè.
   }
  //----Êîíòðîëü íà äëèíó ñòðîêè ñ äàííûìè â íîâîì ãðàôè÷åñêîì ìàññèâå.-------------------------------------------------------------------------------
  if (StringLen (Text) > 62)
   {
    Print ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartDoubleArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    Comment ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartDoubleArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    return (false);
   }
  //----Ñîçäà¸ì îáúåêò.-------------------------------------------------------------------------------------------------------------------------------
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true) // Åñëè îáúåêò ñîçäàëñÿ óäà÷íî.
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, Text, 10, "Areal", EMPTY)); // Âîçâðàùàåì ïðèçíàê èçìåíåíèÿ îáúåêòà.
 }
//==========================================================================================================================================================================================================
//10. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñ äàííûìè äâîéíîé òî÷íîñòè.======================================================================================================================
// Ôóíêöèÿ âîçâðàùàåò çíà÷åíèå âûáðàííîé ÿ÷åéêè èëè "0" (íîëü) â ñëó÷àå îøèáêè. Åñëè ìàññèâ îäíîìåðíûé, òî ïàðàìåòð "Cell0" äîëæåí áûòü ðàâåí íóëþ.
double ChartDoubleArrayGet (string Name,  // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                            int    Cell0, // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                            int    Cell1) // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
 {
  int    i, j, k;         // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    LengthNumber;    // Äëèíà èçâëåêàåìîãî ÷èñëà.
  int    Start;           // Ñòàðòîâàÿ ïîçèöèÿ äëÿ èçâëå÷åíèÿ ÷èñëà.
  string Text = "|" + ObjectDescription (Name) + ";";
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.--------------
  if (ObjectFind (Name) == -1) return (0);
  //----------------------------------------------
  Length = StringLen (Text);                                // Äëèíà âñåé ñòðîêè.
  for (i = 0, j = 0; i < Length; i++)                       // Öèêë ïî âñåé ñòðîêå.
   {
    TextSymbol = StringSubstr (Text, i, 1);                 // Òåêóùèé ñèìâîë.
    if (TextSymbol == "|")                                  // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ èëè ìàññèâ îäíîìåðíûé.
     {
      if (j == Cell0)                                       // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè â ïåðâîì èçìåðåíèè.
       {
        for (i++, k = 0; i < Length; i++)                   // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë.
         {
          TextSymbol = StringSubstr (Text, i, 1);           // Òåêóùèé ñèìâîë.
          if (TextSymbol == ";" || TextSymbol == "|")       // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ èëè ïåðâîé, åñëè îí ïîñëåäíèé â ñòðîêå ïåðâîãî èçìåðåíèÿ.
           {
            if (k == Cell1)                                 // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
             {
              LengthNumber = i;                             // Çàïîìèíàåì ïîçèöèþ êîíöà ÷èñëà. Ðàçäåëèòåëü ";" íàõîäèòñÿ ïîñëå èñêîìîãî ÷èñëà.
              for (i--; i >= 0; i--)                        // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë â îáðàòíóþ ñòîðîíó ê íà÷àëó ñòðîêè.
               {
                TextSymbol = StringSubstr (Text, i, 1);     // Òåêóùèé ñèìâîë.
                if (TextSymbol == ";" || TextSymbol == "|") // Ïî ñëåäóþùåìó ðàçäåëèòåëþ îïðåäåëÿåì äëèíó ÷èñëà.
                 {
                  Start = i + 1;                            // Ñòàðòîâàÿ ïîçèöèÿ äëÿ âûäåëåíèÿ ñîäåðæèìîãî.
                  LengthNumber = LengthNumber - Start;      // Äëèíà ñîäåðæèìîãî.
                  if (LengthNumber == 0) return (0);       // Åñëè äëèíà ñîäåðæèìîãî íóëåâàÿ, âîçâðàùàåì íîëü.
                  else return (StrToDouble (StringSubstr (Text, Start, LengthNumber)));
                 }
               }
             }
            k++;
           }
         }
       }
      j++;
     }
   }
  return (-1);
 }
//==========================================================================================================================================================================================================
//11. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå ñòðîêîâûõ äàííûõ.======================================================================================================================
// Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, òî ïîñëåäíèå ïàðàìåòðû (Size0, Size1) êîëè÷åñòâà ýëåìåíòîâ â ïåðâîì è âòîðîì èçìåðåíèÿõ óêàçûâàòü íå îáÿçàòåëüíî.
// Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ìàññèâ.
// Çàïðåù¸ííûå äëÿ çàïèñè çíàêè: ";" (òî÷êà ñ çàïÿòîé), "|" (âåðòèêàëüíàÿ ÷åðòà), "" (ïóñòàÿ ñòðîêà).
// Ïðè âîçâðàùåíèè ñîäåðæèìîãî ÿ÷åéêè ñ ïóñòîé ñòðîêîé, áóäåò ïîëó÷åí ðàçäåëèòåëü, ñëåäóþùèé çà óêàçàííîé ÿ÷åéêîé.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool ChartStringArraySet (string Name,      // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                          string Value,     // Ñòðîêîâîå çíà÷åíèå äëÿ âíåñåíèÿ èçìåíåíèé â ìàññèâå.
                          string Default,   // Ñòðîêîâîå çíà÷åíèå ïî óìîë÷àíèþ äëÿ îñòàëüíûõ ÿ÷ååê.
                          int    Cell0,     // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                          int    Cell1,     // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
                          int    Size0,     // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ.
                          int    Size1)     // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ.

 {
  int    i, j, k;         // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    EndStr1;         // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà.
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    Size_0;          // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
  int    Size_1;          // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
  int    StartStr2;       // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
  string Text = "";       // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Ñëèøêîì äëèííîå èìÿ ìàññèâà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÑëèøêîì äëèííîå èìÿ ìàññèâà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  if (Value == ";" || Value == "|")
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Íåäîïóñòèìîå çíà÷åíèå âòîðîãî ïàðàìåòðà. Value = ", Value);
    Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÍåäîïóñòèìîå çíà÷åíèå âòîðîãî ïàðàìåòðà. Value = ", Value);
    return (false);
   }
  if (Default == ";" || Default == "|")
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Íåäîïóñòèìîå çíà÷åíèå òðåòüåãî ïàðàìåòðà. Default = ", Default);
    Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÍåäîïóñòèìîå çíà÷åíèå òðåòüåãî ïàðàìåòðà. Default = ", Default);
    return (false);
   }
  //----Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸ì íîâûé ñ îäíîé çàïîëíåííîé ÿ÷åéêîé. Âñå îñòàëüíûå çàïîëíÿåì íóëÿìè.---------------------------
  if (ObjectFind (Name) == -1)
   {// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
    if ((2 * Size0 * Size1 - 1) > 62) // Êîíòðîëü ìàêñèìàëüíî âîçìîæíîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (false);
     }
    if (Cell0 >= Size0)
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÍîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      return (false);
     }
    if (Cell1 >= Size1)
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÍîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
      return (false);
     }
    for (i = 0; i < Size0; i++)                            // Öèêë ïåðâîãî èçìåðåíèÿ.
     {
      for (j = 0; j < Size1; j++)                          // Öèêë âòîðîãî èçìåðåíèÿ.
       {
        k++;                                               // Ñ÷¸ò÷èê âñåõ ýëåìåíòîâ.
        if (i == Cell0 && j == Cell1) Text = Text + Value; // Åñëè àäðåñ ñîâïàë, çàíîñèì íîâîå çíà÷åíèå.
        else Text = Text + Default;                        // Âî âñå îñòàëüíûå ÿ÷åéêè çàíîñèì óìîë÷àòåëüíîå çíà÷åíèå.
        if (j != (Size1 - 1)) Text = Text + ";";           // Óñòàíàâëèâàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
        else if (k != Size0 * Size1) Text = Text + "|";    // Óñòàíàâëèâàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
       }
     }
   }
  //----Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, ñíà÷àëà ïðîâåðÿåì íà ñîîòâåòñòâèå ðàçìåðîâ èçìåðåíèé.-----------------------------------------------------
  if (ObjectFind (Name) != -1)
   {
    Text = "|" + ObjectDescription (Name) + ";";         // Âåñü òåêñò.
    Length = StringLen (Text);                           // Äëèíà òåêñòà.
    for (i = 0, j = 0, k = 0; i < Length; i++)           // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Ñèìâîë.
      if (TextSymbol == "|") j++;                        // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
      if (TextSymbol == ";" || TextSymbol == "|") k++;   // Ïðîâåðÿåì íà ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ.
     }
    Size_0 = j;           // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
    Size_1 = (k - 1) / j; // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà.
    if (Size_0 <= Cell0)  // Êîíòðîëü ðàçìåðíîñòè ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà è çàÿâëåííîãî ïàðàìåòðà íîìåðà ÿ÷åéêè â ïåðâîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell0\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell0\".");
      return (false);
     }
    if (Size_1 <= Cell1)  // Êîíòðîëü ðàçìåðíîñòè ñóùåñòâóþùåãî ãðàôè÷åñêîãî ìàññèâà è çàÿâëåííîãî ïàðàìåòðà íîìåðà ÿ÷åéêè âî âòîðîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell1\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartStringArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè ìåíüøå, ÷åì çàÿâëåííûé ïàðàìåòð \"Cell1\".");
      return (false);
     }
    // Èùèì íîìåðà ïîçèöèé äî è ïîñëå ÷èñëà.
    for (i = 0, k = 0; i < Length; i++)                  // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Òåêóùèé ñèìâîë.
      if (TextSymbol == ";" || TextSymbol == "|")        // Èùèì ðàçäåëèòåëè.
       {
        if (k == (Cell0 * Size_1 + Cell1))               // Åñëè ñîâïàë íîìåð ðàçäåëèòåëÿ ñ íîìåðîì èñêîìîé ïîçèöèè.
         {
          EndStr1 = i;                                   // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
          break;                                         // Âûõîäèì èç öèêëà.
         }
        k++;                                             // Íîìåð ðàçäåëèòåëÿ.
       }
     }
    for (i++; i < Length; i++)                           // Ïðîäîëæàåì öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Òåêóùèé ñèìâîë.
      if (TextSymbol == ";" || TextSymbol == "|")        // Ñëåäóþùèé ðàçäåëèòåëü.
       {
        StartStr2 = i;                                   // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
        break;                                           // Âûõîäèì èç öèêëà.
       }
     }
    // Ñèíòåçèðóåì íîâóþ ñòðîêó.
    Text = StringSubstr (Text, 0, EndStr1 + 1) + Value + StringSubstr (Text, StartStr2, 0);
    Text = StringSubstr (Text, 1, StringLen (Text) - 2); // Óáèðàåì ïåðâûé è ïîñëåäíèé ñëóæåáíûå ðàçäåëèòåëè.
   }
  //----Êîíòðîëü íà äëèíó ñòðîêè ñ äàííûìè â íîâîì ãðàôè÷åñêîì ìàññèâå.-------------------------------------------------------------------------------
  if (StringLen (Text) > 62)
   {
    Print ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartStringArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    Comment ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartStringArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    return (false);
   }
  //----Ñîçäà¸ì îáúåêò.-------------------------------------------------------------------------------------------------------------------------------
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true) // Åñëè îáúåêò ñîçäàëñÿ óäà÷íî.
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, Text, 10, "Areal", EMPTY)); // Âîçâðàùàåì ïðèçíàê èçìåíåíèÿ îáúåêòà.
 }
//==========================================================================================================================================================================================================
//12. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñî ñòðîêîâûìè äàííûìè.===========================================================================================================================
// Ôóíêöèÿ âîçâðàùàåò çíà÷åíèå âûáðàííîé ÿ÷åéêè èëè "ERROR1" â ñëó÷àå îøèáêè ñ èìåíåì ãðàôè÷åñêîãî ìàññèâà èëè "ERROR2" â ñëó÷àÿõ íå âåðíîé àäðåñàöèè.
// Åñëè ìàññèâ îäíîìåðíûé, òî ïàðàìåòð "Cell0" äîëæåí áûòü ðàâåí íóëþ.
string ChartStringArrayGet (string Name,  // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                            int    Cell0, // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                            int    Cell1) // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
 {
  int    i, j, k;         // Ïåðåìåííûå äëÿ öèêëîâ è ñ÷¸ò÷èêîâ.
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    LengthNumber;    // Äëèíà èçâëåêàåìîãî ÷èñëà.
  int    Start;           // Ñòàðòîâàÿ ïîçèöèÿ äëÿ èçâëå÷åíèÿ ÷èñëà.
  string Text = "|" + ObjectDescription (Name) + ";";
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.--------------
  if (ObjectFind (Name) == -1) return ("ERROR1");
  //----------------------------------------------
  Length = StringLen (Text);                                // Äëèíà âñåé ñòðîêè.
  for (i = 0, j = 0; i < Length; i++)                       // Öèêë ïî âñåé ñòðîêå.
   {
    TextSymbol = StringSubstr (Text, i, 1);                 // Òåêóùèé ñèìâîë.
    if (TextSymbol == "|")                                  // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ èëè ìàññèâ îäíîìåðíûé.
     {
      if (j == Cell0)                                       // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
       {
        for (i++, k = 0; i < Length; i++)                   // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë.
         {
          TextSymbol = StringSubstr (Text, i, 1);           // Òåêóùèé ñèìâîë.
          if (TextSymbol == ";" || TextSymbol == "|")       // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ èëè ïåðâîé, åñëè îí ïîñëåäíèé â ñòðîêå ïåðâîãî èçìåðåíèÿ.
           {
            if (k == Cell1)                                 // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè âî âòîðîãî èçìåðåíèÿ.
             {
              LengthNumber = i;                             // Çàïîìèíàåì ïîçèöèþ êîíöà ÷èñëà. Ðàçäåëèòåëü ";" íàõîäèòñÿ ïîñëå èñêîìîãî ÷èñëà.
              for (i--; i >= 0; i--)                        // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë â îáðàòíóþ ñòîðîíó ê íà÷àëó ñòðîêè.
               {
                TextSymbol = StringSubstr (Text, i, 1);     // Òåêóùèé ñèìâîë.
                if (TextSymbol == ";" || TextSymbol == "|") // Ïî ñëåäóþùåìó ðàçäåëèòåëþ îïðåäåëÿåì äëèíó ÷èñëà.
                 {
                  Start = i + 1;                            // Ñòàðòîâàÿ ïîçèöèÿ äëÿ âûäåëåíèÿ ñîäåðæèìîãî.
                  LengthNumber = LengthNumber - Start;      // Äëèíà ñîäåðæèìîãî.
                  if (LengthNumber == 0) return ("");       // Åñëè äëèíà ñîäåðæèìîãî íóëåâàÿ, âîçâðàùàåì ïóñòóþ ñòðîêó.
                  else return (StringSubstr (Text, Start, LengthNumber));
                 }
               }
             }
            k++;
           }
         }
       }
      j++;
     }
   }
  return ("ERROR2");
 }
//==========================================================================================================================================================================================================
//ææææ Ôóíêöèè ñ ãðàôè÷åñêèìè ôàéëàìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//==========================================================================================================================================================================================================
//13. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.===========================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadDoubleArray1 (string  Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                               double& Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
                               int     Start,   // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
                               int     Count)   // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
 {
  int    i;
  int    j = 0;
  int    Length;
  string Text = ObjectDescription (Name) + ";";
  string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadDoubleArray1()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadDoubleArray1()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);
  for (i = 0; i < Length; i++)
   {
    TextSymbol = StringSubstr (Text, i, 1);
    if (TextSymbol == ";")
     {
      if (Count == j) break;
      Array[Start + j] = StrToInteger (TextNumber);
      TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
      j++;
     }
    else TextNumber = TextNumber + TextSymbol;
   }
  return (j);
 }
//==========================================================================================================================================================================================================
//14. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.===========================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadDoubleArray2 (string  Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                               double& Array[][]) // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
 {
  int    Size0 = ArrayRange (Array, 0);         // Ðàçìåð ïåðâîé ðàçìåðíîñòè.
  int    Size1 = ArrayRange (Array, 1);         // Ðàçìåð âòîðîé ðàçìåðíîñòè.
  int    i;                                     // Íîìåð ïîçèöèè â ñòðîêå.
  int    j = 0;                                 // Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè.
  int    k = 0;                                 // Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè.
  int    AmountElement = 0;                     // Êîëè÷åñòâî ýëåìåíòîâ.
  int    Length;                                // Äëèíà ñòðîêè.
  string Text = ObjectDescription (Name) + ";"; // Âñÿ ñòðîêà.
  string TextNumber = "";                       // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = "";                       // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadDoubleArray2()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadDoubleArray2()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);
  for (i = 0; i < Length; i++)
   {
    TextSymbol = StringSubstr (Text, i, 1);
    if (TextSymbol == ";" || TextSymbol == "|" || k == Size1)
     {
      Array[j][k] = StrToInteger (TextNumber);
      k++;
      if (TextSymbol == "|" || Size1 == k)
       {
        j++;
        k = 0;
       }
      AmountElement++;
      if (j >= Size0) break;
      TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
     }
    else TextNumber = TextNumber + TextSymbol;
   }
  return (AmountElement);
 }
//==========================================================================================================================================================================================================
//15. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ.=====================================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadIntArray1 (string Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                            int&   Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
                            int    Start,   // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
                            int    Count)   // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
 {
  int    i;
  int    j = 0;
  int    Length;
  string Text = ObjectDescription (Name) + ";";
  string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadIntArray1()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadIntArray1()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);
  for (i = 0; i < Length; i++)
   {
    TextSymbol = StringSubstr (Text, i, 1);
    if (TextSymbol == ";")
     {
      if (Count == j) break;
      Array[Start + j] = StrToInteger (TextNumber);
      TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
      j++;
     }
    else TextNumber = TextNumber + TextSymbol;
   }
  return (j);
 }
//==========================================================================================================================================================================================================
//16. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ.===================================================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ïðèíèìàþùåãî ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadIntArray2 (string Name,       // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                            int&   Array[][])  // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
 {
  int    Size0 = ArrayRange (Array, 0);         // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  int    Size1 = ArrayRange (Array, 1);         // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  int    i;                                     // Íîìåð ïîçèöèè â ñòðîêå.
  int    j = 0;                                 // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
  int    k = 0;                                 // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
  int    AmountElement = 0;                     // Êîëè÷åñòâî ýëåìåíòîâ.
  int    Length;                                // Äëèíà ñòðîêè.
  string Text = ObjectDescription (Name) + ";"; // Âñÿ ñòðîêà.
  string TextNumber = "";                       // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = "";                       // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadIntArray2()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadIntArray2()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);                    // Äëèíà òåêñòîâîé ñòðîêè.
  for (i = 0; i < Length; i++)                  // Öèêë ïî ýëåìåíòàì òåêñòîâîé ñòðîêè.
   {
    TextSymbol = StringSubstr (Text, i, 1);     // Âûäåëÿåì ñèìâîë.
    if (TextSymbol == ";" || TextSymbol == "|" || k == Size1) // Åñëè íàøëè ðàçäåîèòåëü.
     {
      Array[j][k] = StrToInteger (TextNumber);  // Êëàä¸ì â ìàññèâ íàéäåííîå ÷èñëî.
      k++;                                      // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
      if (TextSymbol == "|" || k == Size1)      // Åñëè ðàçäåëèòåëü ïåðâîé ðàçìåðíîñòè èëè ñ÷¸ò÷èê âòîðîé ðàçìåðíîñòè ñîâïàë ñ ðàçìåðîì âòîðîé ðàçìåðíîñòè.
       {
        j++;                                    // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé ïåðâîé ðàçìåðíîñòè.
        k = 0;                                  // Îáíóëÿåì ñ÷¸ò÷èê ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
       }
      AmountElement++;                          // Ñ÷¸ò÷èê êîëè÷åñòâà ýëåìåíòîâ.
      if (j >= Size0) break;                    // Âûõîäèì èç öèêëà, åñëè ñ÷¸ò÷èê ïåðâîé ðàçìåðíîñòè ðàâåí êîëè÷åñòâó ýëåìåíòîâ ïåðâîé ðàçìåðíîñòè.
      TextNumber = "";                          // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = "";                          // Èíèöèàëèçèðóåì çàíîâî.
     }
    else TextNumber = TextNumber + TextSymbol;  // Ñèíòåçèðóåì ÷èñëî.
   }
  return (AmountElement);
 }
//==========================================================================================================================================================================================================
//17. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ.==================================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadStringArray1 (string  Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                               string& Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
                               int     Start,   // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
                               int     Count)   // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
 {
  int    i;
  int    j = 0;
  int    Length;
  string Text = ObjectDescription (Name) + ";";
  string TextNumber = ""; // Ýëåìåíò ìàññèâà ñòðîêîâîì âèäå.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadStringArray1()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadStringArray1()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);
  for (i = 0; i < Length; i++)
   {
    TextSymbol = StringSubstr (Text, i, 1);
    if (TextSymbol == ";")
     {
      if (Count == j) break;
      Array[Start + j] = TextNumber; // Êëàä¸ì â ìàññèâ íàéäåííóþ ñòðîêó.
      TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
      j++;
     }
    else TextNumber = TextNumber + TextSymbol;
   }
  return (j);
 }
//==========================================================================================================================================================================================================
//18. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ.================================================================================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ïðèíèìàþùåãî ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ èëè "-1" â ñëó÷àå îøèáêè.
int FileChartReadStringArray2 (string  Name,       // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                               string& Array[][])  // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
 {
  int    Size0 = ArrayRange (Array, 0);         // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
  int    Size1 = ArrayRange (Array, 1);         // Ðàçìåð âòîðîãî èçìåðåíèÿ.
  int    i;                                     // Íîìåð ïîçèöèè â ñòðîêå.
  int    j = 0;                                 // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
  int    k = 0;                                 // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
  int    AmountElement = 0;                     // Êîëè÷åñòâî ýëåìåíòîâ.
  int    Length;                                // Äëèíà ñòðîêè.
  string Text = ObjectDescription (Name) + ";"; // Âñÿ ñòðîêà.
  string TextNumber = "";                       // Ýëåìåíò ìàññèâà â ñòðîêîâîì âèäå.
  string TextSymbol = "";                       // Ñòðîêîâûé ñèìâîë.
  //----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
  if (ObjectFind (Name) == -1)
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartReadStringArray2()\". Ãðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartReadStringArray2()\".\nÃðàôè÷åñêèé ôàéë ñ èìåíåì \"", Name, "\" íå ñóùåñòâóåò");
    return (-1);
   }
  //--------------------------------------------------------------------------------------------------------------------------------------------------
  Length = StringLen (Text);                    // Äëèíà òåêñòîâîé ñòðîêè.
  for (i = 0; i < Length; i++)                  // Öèêë ïî ýëåìåíòàì òåêñòîâîé ñòðîêè.
   {
    TextSymbol = StringSubstr (Text, i, 1);     // Âûäåëÿåì ñèìâîë.
    if (TextSymbol == ";" || TextSymbol == "|" || k == Size1) // Åñëè íàøëè ðàçäåîèòåëü.
     {
      Array[j][k] = TextNumber;                 // Êëàä¸ì â ìàññèâ íàéäåííóþ ñòðîêó.
      k++;                                      // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
      if (TextSymbol == "|" || k == Size1)      // Åñëè ðàçäåëèòåëü ïåðâîé ðàçìåðíîñòè èëè ñ÷¸ò÷èê âòîðîé ðàçìåðíîñòè ñîâïàë ñ ðàçìåðîì âòîðîé ðàçìåðíîñòè.
       {
        j++;                                    // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé ïåðâîé ðàçìåðíîñòè.
        k = 0;                                  // Îáíóëÿåì ñ÷¸ò÷èê ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
       }
      AmountElement++;                          // Ñ÷¸ò÷èê êîëè÷åñòâà ýëåìåíòîâ.
      if (j >= Size0) break;                    // Âûõîäèì èç öèêëà, åñëè ñ÷¸ò÷èê ïåðâîé ðàçìåðíîñòè ðàâåí êîëè÷åñòâó ýëåìåíòîâ ïåðâîé ðàçìåðíîñòè.
      TextNumber = "";                          // Èíèöèàëèçèðóåì çàíîâî.
      TextSymbol = "";                          // Èíèöèàëèçèðóåì çàíîâî.
     }
    else TextNumber = TextNumber + TextSymbol;  // Ñèíòåçèðóåì ÷èñëî.
   }
  return (AmountElement);
 }
//==========================================================================================================================================================================================================
//19. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.===================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteDoubleArray1 (string  Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                                double& Array[],   // Ìàññèâ äëÿ çàïèñè.
                                int     Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
                                int     Start,     // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
                                int     Count)     // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
 {
  int i;
  int Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = Start; i < (Start + Count); i++)
   {
    Text = Text + DoubleToStr (Array[i], Precision) + ";";
    Length = StringLen (Text) - 1;
    if (Length > 62)
     {
      Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (-1);
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//20. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.====================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteDoubleArray2 (string  Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                                double& Array[][], // Ìàññèâ äëÿ çàïèñè.
                                int     Precision) // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
 {
  int    Size0 = ArrayRange (Array, 0);
  int    Size1 = ArrayRange (Array, 1);
  int    i, j;
  int    Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = 0; i < Size0; i++)
   {
    for (j = 0; j < Size1; j++)
     {
      if (j == (Size1 - 1)) Text = Text + DoubleToStr (Array[i][j], Precision) + "|";
      else Text = Text + DoubleToStr (Array[i][j], Precision) + ";";
      Length = StringLen (Text) - 1;
      if (Length > 62)
       {
        Print ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteDoubleArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//21. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.================================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteIntArray1 (string Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                             int&   Array[], // Ìàññèâ äëÿ çàïèñè.
                             int    Start,   // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
                             int    Count)   // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
 {
  int i;
  int Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ñëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\".\nÑëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = Start; i < (Start + Count); i++)
   {
    Text = Text + DoubleToStr (Array[i], 0) + ";";
    Length = StringLen (Text) - 1;
    if (Length > 62)
     {
      Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (-1);
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//22. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.=================================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteIntArray2 (string Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                             int&   Array[][]) // Ìàññèâ äëÿ çàïèñè.
 {
  int    Size0 = ArrayRange (Array, 0);
  int    Size1 = ArrayRange (Array, 1);
  int    i, j;
  int    Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = 0; i < Size0; i++)
   {
    for (j = 0; j < Size1; j++)
     {
      if (j == (Size1 - 1)) Text = Text + DoubleToStr (Array[i][j], 0) + "|";
      else Text = Text + DoubleToStr (Array[i][j], 0) + ";";
      Length = StringLen (Text) - 1;
      if (Length > 62)
       {
        Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//23. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñòðîêîâûõ äàííûõ â ãðàôè÷åñêèé ôàéë.=============================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteStringArray1 (string  Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                                string& Array[], // Ìàññèâ äëÿ çàïèñè.
                                int     Start,   // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
                                int     Count)   // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
 {
  int i;
  int Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ñëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\".\nÑëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = Start; i < (Start + Count); i++)
   {
    Text = Text + Array[i] + ";";
    Length = StringLen (Text) - 1;
    if (Length > 62)
     {
      Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray1()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (-1);
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//24. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé ìàññèâ ñî ñòðîêîâûìè äàííûìè â ãðàôè÷åñêèé ôàéë.=========================================================================================================================
// Åñëè ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteStringArray2 (string  Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                                string& Array[][]) // Ìàññèâ äëÿ çàïèñè.
 {
  int    Size0 = ArrayRange (Array, 0);
  int    Size1 = ArrayRange (Array, 1);
  int    i, j;
  int    Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (-1);
   }
  // Ñèíòåç ñòðîêè äëÿ çàïèñè.
  for (i = 0; i < Size0; i++)
   {
    for (j = 0; j < Size1; j++)
     {
      if (j == (Size1 - 1)) Text = Text + DoubleToStr (Array[i][j], 0) + "|";
      else Text = Text + Array[i][j] + ";";
      Length = StringLen (Text) - 1;
      if (Length > 62)
       {
        Print ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteIntArray2()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalChartVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalChartVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalChartVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalChartVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "" || ObjectDescription ("ListGlobalChartVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalChartVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalChartVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalChartVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//==========================================================================================================================================================================================================
//ææææ Ñëóæåáíûå ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè, ìàññèâàìè è ôàéëàìè. ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//==========================================================================================================================================================================================================
//25. Ôóíêöèÿ êîíòðîëÿ íàëè÷èÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.===========================================================================================================================================
// Âîçâðàùàåò çíà÷åíèå TRUE, åñëè ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ ñóùåñòâóåò, èíà÷å âîçâðàùàåò FALSE.
bool GlobalChartVariableCheck (string Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  if (ObjectFind (Name) == -1) return (false);
  else return (true);
 }
//==========================================================================================================================================================================================================
//26. Ôóíêöèÿ óäàëåíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.===================================================================================================================================================
// Óäàëåíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ñ óêàçàííûì èìåíåì.
// Ïðè óñïåøíîì óäàëåíèè ôóíêöèÿ âîçâðàùàåò TRUE, èíà÷å FALSE.
bool GlobalChartVariableDel (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  int i;
  //----
  for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ïåðåìåííûõ.
   {// Åñëè íàøëè óäàëÿåìóþ ïåðåìåííóþ.
    if (ObjectDescription ("ListGlobalChartVariable_" + i) == Name)
     {
      for (; i < 100; i++)  // Ïðîäîëæàåì íà÷àòûé öèêë ïî ñïèñêó ïåðåìåííûõ. Ñîðòèðîâêà.
       {// Åñëè íàøëè îòñóòñòâóþùèé îáúåêò ñ çàïèñüþ èëè îòñóòñòâóþùóþ çàïèñü â ñïèñêå.
        if (ObjectFind ("ListGlobalChartVariable_" + i) == -1 || ObjectDescription ("ListGlobalChartVariable_" + i) == "")
         {// Óäàëÿåì ïîñëåäíèå ïóñòûå ñòðîêè â ñïèñêå ãðàôè÷åñêèõ ïåðåìåííûõ.
          ObjectDelete (StringConcatenate("ListGlobalChartVariable_", i - 1));
          // Âûõîäèì èç öèêëà, çàâåðøàåì ôóíêöèþ óäàëåíèåì ãðàôè÷åñêîé ïåðåìåííîé, åñëè ñëåäóþùåãî îáúåêòà íåò èëè îí íå èìååò îïèñàíèÿ.
          return (ObjectDelete (Name));
         }
        // Ïåðåíîñèì ñëåäóþùèå çàïèñè íà îñâîáîäèâøååñÿ ìåñòî.
        ObjectSetText ("ListGlobalChartVariable_" + i, ObjectDescription (StringConcatenate("ListGlobalChartVariable_", i + 1)), 10, "Areal", EMPTY);
       }
     }
   }
  return (false);
 }
//==========================================================================================================================================================================================================
//27. Ôóíêöèÿ âîçâðàùàåò èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ïî ïîðÿäêîâîìó íîìåðó â ñïèñêå ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.============================================================================
// Êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íå ìîæåò áûòü áîëüøå 100. Ïåðâûé èíäåêñ ðàâåí íóëþ. Ïîñëåäíèé èíäåêñ ðàâåí 99.
// Åñëè ïîä èñêîìûì èíäåêñîì íåò ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, òî ôóíêöèÿ âåðí¸ò ïóñòóþ ñòðîêó.
string GlobalChartVariableName (int Index) // Ïîðÿäêîâûé íîìåð â ñïèñêå ãëîáàëüíûõ ïåðåìåííûõ. Äîëæåí áûòü áîëüøèì èëè ðàâíûì 0 è ìåíüøèì, ÷åì GlobalChartVariablesTotal().
 {
  return (ObjectDescription ("ListGlobalChartVariable_" + Index));
 }
//==========================================================================================================================================================================================================
//28. Ôóíêöèÿ óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.====================================================================================================================================================
// Óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå. Åñëè ïðåôèêñ äëÿ èìåíè íå çàäàí, òî óäàëÿþòñÿ âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
//  ïðîòèâíîì ñëó÷àå óäàëÿþòñÿ òîëüêî òå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå, èìåíà êîòîðûõ íà÷èíàþòñÿ íà óêàçàííûé ïðåôèêñ.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî óäàëåííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ â ïðîòèâíîì ñëó÷àå âîçâðàùàåò "-1".
int GlobalChartVariablesDeleteAll (string PrefixName) // Ïðåôèêñ èìåíè óäàëÿåìûõ ãëîáàëüíûõ ïåðåìåííûõ.
 {
  bool   Switch = true; // Îòêëþ÷àòåëü ñ÷¸ò÷èêà íîìåðà ïåðâîé óäàë¸ííîé ñòðîêè ñïèñêà.
  int    AmountDelete;  // Êîëè÷åñòâî óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
  int    i, j, k, l;
  int    Length;        // Äëèíà ñòðîêè.
  string Description;   // Îïèñàíèå îáúåêòà.
  string NameList;      // Èìÿ ñïèñêà ãðàôè÷åñêèõ ïåðåìåííûõ.
  //----
  if (PrefixName == "")       // Åñëè ïðåôèêñ íå çàäàí, òî óäàëÿåì âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
   {
    for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     {
      NameList = "ListGlobalChartVariable_" + i;   // Èìÿ ñïèñêà ãðàôè÷åñêèõ ïåðåìåííûõ.
      if (ObjectFind (NameList) == -1) return (i); // Çàâåðøàåì ôóíêöèþ, åñëè ñëåäóþùåé çàïèñè íåò.
      ObjectDelete (ObjectDescription (NameList)); // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
      ObjectDelete (NameList);                     // Óäàëÿåì ÷àñòü ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     }
   }
  else // Åñëè ïðåôèêñ çàäàí, òî óäàëÿåì ïî ìàñêå.
   {// Óäàëÿåì íàéäåííûå ãðàôè÷åñêèå ïåðåìåííûå è îáíóëÿåì çàïèñè î íèõ â ñïèñêå.
    Length = StringLen (PrefixName);
    for (i = 0, l = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     {
      NameList = "ListGlobalChartVariable_" + i;     // Èìÿ ñòðîêè ñïèñêà ãðàôè÷åñêèõ ïåðåìåííûõ.
      if (ObjectFind (NameList) == -1) break;        // Çàâåðøàåì öèêë, åñëè ñëåäóþùåé çàïèñè íåò.
      if (StringSubstr (ObjectDescription (NameList), 0, Length) == PrefixName)
       {
        if (Switch == true)                          // Ïðîïóñêàåì òîëüêî îäèí ðàç.
         {
          l = i;                                     // Çàïîìèíàåì íîìåð ïåðâîé óäàë¸ííîé ñòðîêè ñïèñêà.
          Switch = false;                            // Çàïðåùàåì íà äðóãèõ èòåðàöèÿõ èçìåíÿòü íîìåð ïåðâîé óäàë¸ííîé ñòðîêè ñïèñêà.
         }
        AmountDelete++;                              // Ñ÷¸ò÷èê óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
        ObjectDelete (ObjectDescription (NameList)); // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
        ObjectDelete (NameList);                     // Óäàëÿåì ÷àñòü ñïèñêà.
       }
     }
    // Ñîðòèðîâêà. Çàïèñè ñäâèãàåì â íà÷àëî íà ñâîáîäíûå ìåñòà.
    for (j = l + 1, k = l; j < i; j++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ ñî ñëåäóþùåé ïîñëå ïåðâîé óäàë¸ííîé ñòðîêè.
     {
      if (ObjectFind ("ListGlobalChartVariable_" + j) != -1)
       {// Ñîçäà¸ì íîâóþ ñòðîêó ñ íîâûì íîìåðîì ñî ñòàðûì ñîäåðæèìûì.
        ObjectCreate  ("ListGlobalChartVariable_" + k, OBJ_LABEL, 0, 0, 0, 0, 0);
        ObjectSetText ("ListGlobalChartVariable_" + k, ObjectDescription ("ListGlobalChartVariable_" + j), 10, "Areal", EMPTY);
        // Óäàëÿåì ñòàðóþ ñòðîêó ñïèñêà.
        ObjectDelete ("ListGlobalChartVariable_" + j);
        k++;
       }
     }
    return (AmountDelete); // Çàâåðøàåì ôóíêöèþ.
   }
  return (-1);
 }
//==========================================================================================================================================================================================================
//29. Ôóíêöèÿ âîçâðàùàåò îáùåå êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.================================================================================================================================
//  ñëó÷àå îøèáêè âîçâðàùàåò "-1".
int GlobalChartVariablesTotal()
 {
  int    i;
  string Name;
  //----
  for (i = 0; i < 100; i++)
   {
    Name = "ListGlobalChartVariable_" + i;
    if (ObjectFind (Name) == -1 || ObjectDescription (Name) == "" || ObjectDescription (Name) == "Label") return (i);
   }
  return (-1);
 }
//==========================================================================================================================================================================================================
//30. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.============================================================================================================================================
// Âîçâðàùàåò TRUE, åñëè ïåðåèìåíîâàíèå ïðîøëî óñïåøíî.  ïðîòèâíîì ñëó÷àå - FALSE.
bool RenamingGlobalChartVariable (string ExistingName, // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, êîòîðîå òðåáóåòñÿ èçìåíèòü.
                                  string NewName)      // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé, íà êîòîðîå òðåáóåòñÿ èçìåíèòü.
 {
  int i;
  // Ñîçäà¸ì íîâûé îáúåêò (íîâóþ ïåðåìåííóþ) ñî ñâîéñòâàìè ïåðåèìåííóåìîãî.
  ObjectCreate  (NewName, OBJ_LABEL, 0, 0, 0, 0, 0);
  ObjectSet     (NewName, OBJPROP_TIMEFRAMES, EMPTY);
  ObjectSetText (NewName, ObjectDescription (ExistingName), 10, "Areal", EMPTY); // Ïåðåíîñèì îïèñàíèå íà íîâûé îáúåêò.
  // Çàìåíÿåì â ñïèñêå èìÿ ïåðåìåííîé íà íîâîå.
  for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
   {
    if (ObjectDescription ("ListGlobalChartVariable_" + i) == ExistingName)
     {
      ObjectSetText ("ListGlobalChartVariable_" + i, NewName, 10, "Areal", EMPTY); // Íàéäåííóþ çàïîëíåííóþ çàïèñü îñâîáîæäàåì.
      break;
     }
   }
  return (ObjectDelete (ExistingName)); // Óäàëÿåì ñòàðóþ ïåðåìåííóþ è âîçâðàùàåì ñîñòîÿíèå ïðîâåä¸ííîé îïåðàöèè.
 }
//==========================================================================================================================================================================================================
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: