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