ZH_Global_Chart_Variable_Lib





//+--------------------------------------------------------------------------------------------------------------------------------------------------+
//|                                                                                                                  ZH_Global_Chart_Variable_Lib.mq4|
//|                                                                                                                  Copyright © Zhunko              |
//|04.09.2008 - 10.09.2008                                                                                           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. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.                                                                                    |
//+--------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2008 Zhunko"
#property link      "vadim@zhunko.ru"
#property library
//ææææ Ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 1. Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=========================================================================
// Âîçâðàùàåò ÷èñëîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
double GlobalChartVariableGetDouble (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  return (StrToDouble (ObjectDescription (Name)));
 }
//====================================================================================================================================================
// 2. Ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.========================================================================
// Âîçâðàùàåò ñòðîêîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
string GlobalChartVariableGetStr (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  return (ObjectDescription (Name));
 }
//====================================================================================================================================================
// 3. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.================================================================
// Óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartVariableSetDouble (string& Name,      // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
                                   double& Value,     // ×èñëîâîå çíà÷åíèå.
                                   int&    Precision) // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
 {
  int i;
  //----
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, DoubleToStr (Value, Precision), 10, "Areal", EMPTY));
 }
//====================================================================================================================================================
// 4. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.===============================================================
// Óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartVariableSetStr (string& Name,  // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
                                string& Value) // Ñòðîêîâîå çíà÷åíèå.
 {
  int i;
  //----
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet    (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, Value, 10, "Areal", EMPTY));
 }
//====================================================================================================================================================
//ææææ Ôóíêöèè ñ ãðàôè÷åñêèìè ìàññèâàìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 5. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå.=================================================================================
// Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ìàññèâ. Ìîæíî çàïèñûâàòü öåëûå è äâîéíîé òî÷íîñòè ÷èñëà.
// Âûáîð ïðîèçâîäèòñÿ ïàðàìåòðîì "Precision".  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool ChartArraySet (string& Name,      // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                    double& Value,     // ×èñëîâîå çíà÷åíèå äëÿ âíåñåíèÿ èçìåíåíèé â ìàññèâå.
                    int&    Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
                    int&    Size0,     // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ.
                    int&    Size1,     // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ.
                    int&    Cell0,     // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                    int&    Cell1)     // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
 {
  int    i, j, k;
  int    EndStr1;         // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà.
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    StartStr2;       // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
  string Text = "";       // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----
  if (Name == "" || Name == "Label")
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
    return (false);
   }
  if (StringLen (Name) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ñëèøêîì äëèííîå èìÿ ìàññèâà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÑëèøêîì äëèííîå èìÿ ìàññèâà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    return (false);
   }
  if ((2 * Size0 * Size1 - 1) > 62)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
    return (false);
   }
  if (Cell0 >= Size0)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
    return (false);
   }
  if (Cell1 >= Size1)
   {
    Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
    return (false);
   }
  if (ObjectFind (Name) == -1)                           // Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸ì íîâûé ñ îäíîé çàïîëíåííîé ÿ÷åéêîé. Âñå îñòàëüíûå çàïîëíÿåì íóëÿìè.
   {
    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 + "0";                          // Âî âñå îñòàëüíûå ÿ÷åéêè çàíîñèì íóëè.
        if (j != (Size1 - 1)) Text = Text + ";";         // Óñòàíàâëèâàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
        else if (k != Size0 * Size1) Text = Text + "|";  // Óñòàíàâëèâàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
       }
     }
   }
  else
   {// Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, ñíà÷àëà ïðîâåðÿåì íà ñîîòâåòñòâèå ðàçìåðîâ èçìåðåíèé.
    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++;   // Ïðîâåðÿåì íà ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ.
     }
    k--;
    if (j != Size0) // Êîíòðîëü ðàçìåðíîñòè ìàññèâà è çàÿâëåííîãî ïàðàìåòðà ðàçìåðíîñòè â ïåðâîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
      return (false);
     }
    if (k / j != Size1) // Êîíòðîëü ðàçìåðíîñòè ìàññèâà è çàÿâëåííîãî ïàðàìåòðà ðàçìåðíîñòè âî âòîðîì èçìåðåíèè.
     {
      Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
      Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size1\".");
      return (false);
     }
    // Èùèì íîìåðà ïîçèöèé äî è ïîñëå ÷èñëà.
    for (i = 0, k = 0; i < Length; i++)                  // Öèêë ïî ýëåìåíòàì òåêñòà.
     {
      TextSymbol = StringSubstr (Text, i, 1);            // Òåêóùèé ñèìâîë.
      if (TextSymbol == ";" || TextSymbol == "|")        // Èùèì ðàçäåëèòåëè.
       {
        if (k == (Cell0 * Size1 + 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 ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (false);
     }
   }
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                           // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                          // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  return (ObjectSetText (Name, Text, 10, "Areal", EMPTY));
 }
//====================================================================================================================================================
// 6. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñ äàííûìè äâîéíîé òî÷íîñòè.================================================================
// Ôóíêöèÿ âîçâðàùàåò çíà÷åíèå âûáðàííîé ÿ÷åéêè èëè "-1" â ñëó÷àå îøèáêè. Åñëè ìàññèâ îäíîìåðíûé, òî ïàðàìåòð "Cell0" äîëæåí áûòü ðàâåí íóëþ.
double ChartArrayGet (string& Name,  // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                      int&    Cell0, // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
                      int&    Cell1) // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
 {
  int    i, j, k;
  int    Length;          // Äëèíà âñåãî òåêñòà.
  int    LengthNumber;    // Äëèíà èçâëåêàåìîãî ÷èñëà.
  int    Start;           // Ñòàðòîâàÿ ïîçèöèÿ äëÿ èçâëå÷åíèÿ ÷èñëà.
  string Text = "|" + ObjectDescription (Name) + ";";
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----
  Length = StringLen (Text);
  for (i = 0; i < Length; i++)
   {
    TextSymbol = StringSubstr (Text, i, 1);                 // Òåêóùèé ñèìâîë.
    if (TextSymbol == "|")                                  // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü ïåðâîé ðàçìåðíîñòè èëè ìàññèâ îäíîìåðíûé.
     {
      if (j == Cell0)                                       // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè â ïåðâîé ðàçìåðíîñòè.
       {
        for (; i < Length; i++)                             // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë.
         {
          TextSymbol = StringSubstr (Text, i, 1);           // Òåêóùèé ñèìâîë.
          if (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;
                  break;
                 }
               }
              return (StrToDouble (StringSubstr (Text, Start, LengthNumber)));
             }
            k++;
           }
         }
       }
      j++;
     }
   }
  return (-1);
 }
//====================================================================================================================================================
// 7. Ôóíêöèÿ âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà.==================================================================
// Âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà, â ïðîòèâíîì ñëó÷àå "-1".
int ChartArrayRange (string& Name,       // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                     int&    RangeIndex) // Èíäåêñ èçìåðåíèÿ.
 {
  int    i, j, k;                                     // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
  int    Length;                                      // Äëèíà âñåãî òåêñòà.
  string Text = "|" + ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
  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++;  // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
   }
  if (RangeIndex == 0) return (j);                    // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ â ïåðâîì èçìåðåíèè.
  if (RangeIndex == 1) return ((k - 1) / j);          // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ âî âòîðîì èçìåðåíèè.
  return (-1);
 }
//====================================================================================================================================================
// 8. Ôóíêöèÿ ìåíÿåò ðàçìåð óêàçàííîãî èçìåðåíèÿ ãðàôè÷åñêîãî ìàññèâà.================================================================================
// Ïðè óñïåøíîì âûïîëíåíèè ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî âñåõ ýëåìåíòîâ, ñîäåðæàùèõñÿ â ìàññèâå ïîñëå èçìåíåíèÿ ðàçìåðà,
// â ïðîòèâíîì ñëó÷àå âîçâðàùàåò -1, è ìàññèâ íå ìåíÿåò ðàçìåðû.
int ChartArrayResize (string& Name,       // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
                      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 (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 + "0"; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
        else StringSize1 = StringSize1 + "0;";
       }
      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 + "0"; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
        else StringSize1 = StringSize1 + "0;";
       }
      // Ñèíòåçèðóåì âñþ ñòðîêó îäíîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
      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. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.==========================================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray1Int (string& Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                             int&    Array[], // Ìàññèâ äëÿ çàïèñè.
                             int&    Start,   // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
                             int&    Count)   // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
 {
  int i;
  int Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ñëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\".\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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (-1);
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//====================================================================================================================================================
//10. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.===========================================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray2Int (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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\".\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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//====================================================================================================================================================
//11. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.=============================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíûé ãðàôè÷åñêèé îäíîìåðíûé ìàññèâ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray1Double (string& Name,      // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                                double& Array[],   // Ìàññèâ äëÿ çàïèñè.
                                int&    Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
                                int&    Start,     // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
                                int&    Count)     // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
 {
  int i;
  int Length;
  string Text = "";
  // Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
  if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\".\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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
      return (-1);
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//====================================================================================================================================================
//12. Ôóíêöèÿ çàïîëíÿåò çíà÷åíèÿìè äâîéíîé òî÷íîñòè ãëîáàëüíûé ãðàôè÷åñêèé äâóìåðíûé ìàññèâ.==========================================================
// Çàïîëíÿåò íîâûìè ýëåìåíòàìè ñóùåñòâóþùåãî ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà.
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíûé ãðàôè÷åñêèé îäíîìåðíûé ìàññèâ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray2Double (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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
    return (-1);
   }
  if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
   {
    Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
    Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\".\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 ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
        return (-1);
       }
     }
   }
  Text = StringSubstr (Text, 0, Length);
  // Ñîçäà¸ì îáúåêò.
  if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
   {
    if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
     {
      ObjectCreate  ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
      ObjectSet     ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
      ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
     }
    else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
     {
      for (i = 0; i < 100; i++)                          // Öèêë ïî ñïèñêó.
       {// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
         {// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé. 
          ObjectCreate  ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
          ObjectSet     ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
          ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
          break;                                        // Âûõîäèì èç öèêëà.
         } 
       }
     }
   }
  ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
  if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
  return (-1);
 }
//====================================================================================================================================================
//13. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ.===============================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray1Int (string& Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                            int&    Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
                            int&    Start,   // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
                            int&    Count)   // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
 {
  int    i;
  int    j = 0;
  int    Length;
  string Text = ObjectDescription (Name) + ";";
  string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----
  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. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ.=============================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ïðèíèìàþùåãî ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray2Int (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 = "";                       // Ñòðîêîâûé ñèìâîë.
  //----
  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);
 }
//====================================================================================================================================================
//15. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.=====================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray1Double (string& Name,    // Èìÿ ãðàôè÷åñêîãî ôàéëà.
                               double& Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
                               int&    Start,   // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
                               int&    Count)   // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
 {
  int    i;
  int    j = 0;
  int    Length;
  string Text = ObjectDescription (Name) + ";";
  string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
  string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
  //----
  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. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.=====================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray2double (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 = "";                       // Ñòðîêîâûé ñèìâîë.
  //----
  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);
 }
//====================================================================================================================================================
//ææææ Ñëóæåáíûå ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè, ìàññèâàìè è ôàéëàìè. ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//17. Ôóíêöèÿ êîíòðîëÿ íàëè÷èÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=====================================================================================
// Âîçâðàùàåò çíà÷åíèå TRUE, åñëè ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ ñóùåñòâóåò, èíà÷å âîçâðàùàåò FALSE.
bool GlobalChartVariableCheck (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  if (ObjectFind (Name) == -1) return (false);
  else return (true);
 }
//====================================================================================================================================================
//18. Ôóíêöèÿ óäàëåíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=============================================================================================
// Óäàëåíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ñ óêàçàííûì èìåíåì.
// Ïðè óñïåøíîì óäàëåíèè ôóíêöèÿ âîçâðàùàåò TRUE, èíà÷å FALSE.
bool GlobalChartVariableDel (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
 {
  int i;
  //----
  for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ïåðåìåííûõ.
   {// Åñëè íàøëè óäàëÿåìóþ ïåðåìåííóþ.
    if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == Name)
     {
      for (; i < 100; i++)  // Ïðîäîëæàåì íà÷àòûé öèêë ïî ñïèñêó ïåðåìåííûõ. Ñîðòèðîâêà.
       {
        if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "")
         {// Óäàëÿåì ïîñëåäíèå ïóñòûå ñòðîêè â ñïèñêå ãðàôè÷åñêèõ ïåðåìåííûõ.
          for (; ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label"; i--) ObjectDelete ("ListGlobalGraphicVariable_" + i);
          // Âûõîäèì èç öèêëà, çàâåðøàåì ôóíêöèþ óäàëåíèåì ãðàôè÷åñêîé ïåðåìåííîé, åñëè ñëåäóþùåãî îáúåêòà íåò èëè îí íå èìååò îïèñàíèÿ.
          return (ObjectDelete (Name));
         }
        // Ïåðåíîñèì ñëåäóþùèå çàïèñè íà îñâîáîäèâøååñÿ ìåñòî.
        ObjectSetText ("ListGlobalGraphicVariable_" + i, ObjectDescription (StringConcatenate("ListGlobalGraphicVariable_", i + 1)), 10, "Areal", EMPTY);
       }
     }
   }
  return (ObjectDelete (Name));
 }
//====================================================================================================================================================
//19. Ôóíêöèÿ âîçâðàùàåò èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ïî ïîðÿäêîâîìó íîìåðó â ñïèñêå ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.======================
// Êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íå ìîæåò áûòü áîëüøå 100. Ïåðâûé èíäåêñ ðàâåí íóëþ. Ïîñëåäíèé èíäåêñ ðàâåí 99.
// Åñëè ïîä èñêîìûì èíäåêñîì íåò ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, òî ôóíêöèÿ âåðí¸ò ïóñòóþ ñòðîêó.
string GlobalChartVariableName (int& Index) // Ïîðÿäêîâûé íîìåð â ñïèñêå ãëîáàëüíûõ ïåðåìåííûõ. Äîëæåí áûòü áîëüøèì èëè ðàâíûì 0 è ìåíüøèì, ÷åì GlobalChartVariablesTotal().
 {
  return (ObjectDescription ("ListGlobalGraphicVariable_" + Index));
 }
//====================================================================================================================================================
//20. Ôóíêöèÿ âîçâðàùàåò îáùåå êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.==========================================================================
//  ñëó÷àå îøèáêè âîçâðàùàåò "-1".
int GlobalChartVariablesTotal()
 {
  int    i;
  string Name;
  //----
  for (i = 0; i < 100; i++)
   {
    Name = "ListGlobalGraphicVariable_" + i;
    if (ObjectFind (Name) == -1 || ObjectDescription (Name) == "" || ObjectDescription (Name) == "Label") return (i);
   }
  return (-1);
 }
//====================================================================================================================================================
//21. Ôóíêöèÿ óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.==============================================================================================
// Óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå. Åñëè ïðåôèêñ äëÿ èìåíè íå çàäàí, òî óäàëÿþòñÿ âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
//  ïðîòèâíîì ñëó÷àå óäàëÿþòñÿ òîëüêî òå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå, èìåíà êîòîðûõ íà÷èíàþòñÿ íà óêàçàííûé ïðåôèêñ.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî óäàëåííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ â ïðîòèâíîì ñëó÷àå âîçâðàùàåò "-1".
int GlobalChartVariablesDeleteAll (string& PrefixName) // Ïðåôèêñ èìåíè óäàëÿåìûõ ãëîáàëüíûõ ïåðåìåííûõ.
 {
  int AmountDelete; // Êîëè÷åñòâî óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
  int i, j;
  int Length;       // Äëèíà ñòðîêè.
  //----
  if (PrefixName == "")       // Åñëè ïðåôèêñ íå çàäàí, òî óäàëÿåì âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
   {
    for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     {
      if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1) return (i); // Çàâåðøàåì ôóíêöèþ, åñëè ñëåäóþùåé çàïèñè íåò.
      ObjectDelete (ObjectDescription ("ListGlobalGraphicVariable_" + i)); // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
      ObjectDelete ("ListGlobalGraphicVariable_" + i);                     // Óäàëÿåì ÷àñòü ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     }
   }
  else // Åñëè ïðåôèêñ çàäàí, òî óäàëÿåì ïî ìàñêå.
   {// Óäàëÿåì íàéäåííûå ãðàôè÷åñêèå ïåðåìåííûå è îáíóëÿåì çàïèñè î íèõ â ñïèñêå.
    Length = StringLen (PrefixName);
    for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
     {
      if (StringSubstr (ObjectDescription ("ListGlobalGraphicVariable_" + i), 0, Length) == PrefixName)
       {
        AmountDelete++;                                                               // Ñ÷¸ò÷èê óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
        ObjectDelete (ObjectDescription ("ListGlobalGraphicVariable_" + i));          // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
        ObjectSetText ("ListGlobalGraphicVariable_" + i, "", 10, "Areal", EMPTY);     // Óäàëÿåì èìÿ èç ñïèñêà.
       }
     }
    // Ñîðòèðîâêà. Çàïèñè ñäâèãàåì â íà÷àëî íà ñâîáîäíûå ìåñòà.
    for (i = 0; i < 100 && ObjectFind ("ListGlobalGraphicVariable_" + j) != -1; i++)  // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ. Âûõîäèì èç öèêëà, åñëè ñëåäóþùåãî îáúåêòà (çàïèñè) íåò.
     {
      if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label") // Åñëè íàøëè ïóñòóþ ïîçèöèþ.
       {
        j = i;                                                                        // Íîìåð ïåðâîé ïóñòîé ïîçèöèè â ñïèñêå.
        // Ïðîäîëæàåì íà÷àòûé öèêë ïî ñïèñêó ïåðåìåííûõ. Âûõîäèì èç öèêëà, åñëè ñëåäóþùåãî îáúåêòà (çàïèñè) íåò.
        for (j++; j < 100 && ObjectFind ("ListGlobalGraphicVariable_" + j) != -1; j++)
         {// Èùåì ñëåäóþùóþ çàíÿòóþ ñòðîêó.
          if (ObjectDescription ("ListGlobalGraphicVariable_" + j) != "" && ObjectDescription ("ListGlobalGraphicVariable_" + j) != "Label")
           {// Ïåðåíîñèì ñëåäóþùèå çàïèñè íà îñâîáîäèâøååñÿ ìåñòî.
            ObjectSetText ("ListGlobalGraphicVariable_" + i, ObjectDescription ("ListGlobalGraphicVariable_" + j), 10, "Areal", EMPTY);
            ObjectSetText ("ListGlobalGraphicVariable_" + j, "", 10, "Areal", EMPTY); // Íàéäåííóþ çàïîëíåííóþ çàïèñü îñâîáîæäàåì.
            break;                                                                    // Âûõîäèì èç áëèæàéøåãî öèêëà.
           }
         }
       }
     }
    // Óäàëÿåì ïîñëåäíèå ïóñòûå ñòðîêè â ñïèñêå ãðàôè÷åñêèõ ïåðåìåííûõ.
    for (; ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label"; i--) ObjectDelete ("ListGlobalGraphicVariable_" + i);                     // Óäàëÿåì ÷àñòü ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
    return (AmountDelete); // Çàâåðøàåì ôóíêöèþ.
   }
  return (-1);
 }
//====================================================================================================================================================
//22. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.======================================================================================
// Âîçâðàùàåò TRUE, åñëè ïåðåèìåíîâàíèå ïðîøëî óñïåøíî.  ïðîòèâíîì ñëó÷àå - FALSE.
bool RenamingGlobalChartVariable (string& Name1, // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, êîòîðîå òðåáóåòñÿ èçìåíèòü.
                                  string& Name2) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé, íà êîòîðîå òðåáóåòñÿ èçìåíèòü.
 {
  int i;
  // Ñîçäà¸ì íîâûé îáúåêò (íîâóþ ïåðåìåííóþ) ñî ñâîéñòâàìè ïåðåèìåííóåìîãî.
  ObjectCreate  (Name2, OBJ_LABEL, 0, 0, 0, 0, 0);
  ObjectSet     (Name2, OBJPROP_TIMEFRAMES, EMPTY);
  ObjectSetText (Name2, ObjectDescription (Name1), 10, "Areal", EMPTY); // Ïåðåíîñèì îïèñàíèå íà íîâûé îáúåêò.
  // Çàìåíÿåì â ñïèñêå èìÿ ïåðåìåííîé íà íîâîå.
  for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
   {
    if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == Name1)
     {
      ObjectSetText ("ListGlobalGraphicVariable_" + i, Name2, 10, "Areal", EMPTY); // Íàéäåííóþ çàïîëíåííóþ çàïèñü îñâîáîæäàåì.
      break;
     }
   }
  return (ObjectDelete (Name1)); // Óäàëÿåì ñòàðóþ ïåðåìåííóþ è âîçâðàùàåì ñîñòîÿíèå ïðîâåä¸ííîé îïåðàöèè.
 }
//====================================================================================================================================================
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: