//+---------------------------------------------------------------------------------------------------------------------------------------------------+
//| 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)); // Óäàëÿåì ñòàðóþ ïåðåìåííóþ è âîçâðàùàåì ñîñòîÿíèå ïðîâåä¸ííîé îïåðàöèè.
}
//==========================================================================================================================================================================================================
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Comments