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