ZH_Global_Chart_Variable_Lib
Download scriptThis script is a specialized utility library for MetaTrader 4 designed to handle "Global Chart Variables." In simple terms, it allows different automated trading tools (Expert Advisors) or indicators running on the same trading platform to share information with one another by storing data in a way that is visible across different charts.
The logic of the script can be broken down into four main categories:
1. Basic Variable Management
The library provides a way to create, read, and update individual pieces of information. You can store simple text (like a "Mode" or "Status") or numerical values (like a "Price Level" or "Lot Size").
- Dynamic Creation: If the script tries to save a piece of information that doesn't exist yet, it will automatically create it for you.
- Data Safety: It includes built-in checks to ensure that names aren't too long and that the data remains consistent with the platform's limits.
2. Advanced Array Handling (Grids)
Beyond single pieces of information, the script can handle "Arrays"—essentially tables or grids of data. This is useful for storing complex sets of numbers, such as a history of prices or a grid of technical levels.
- Two-Dimensional Mapping: It supports multi-dimensional data, allowing you to organize information into rows and columns.
- Smart Resizing: The logic includes the ability to expand or shrink these data grids dynamically. It manages all the heavy lifting of rearranging the underlying data structure when you want to change the size of your "table."
- Precision Control: When saving numbers into these grids, you can specify exactly how many decimal places should be kept.
3. File-Style Data Storage
A unique feature of this script is that it treats these global variables somewhat like "files" within the chart environment.
- It allows for the writing and reading of entire sequences of numbers (one-dimensional or two-dimensional) into a single designated variable name.
- It uses specific separators (like symbols in a string) to "package" multiple pieces of data together so they can be moved or retrieved as a complete set.
4. Organization and Administrative Tools
To ensure the system remains organized, the script includes several "behind-the-scenes" management functions:
- Master List Tracking: The library maintains an internal registry (a list) of all global variables currently in use. This ensures the system stays organized and doesn't lose track of what has been created.
- Naming & Cleanup: You can rename variables, check if a specific variable exists before trying to use it, or delete them entirely.
- Batch Deletion: There is a "cleanup" logic that allows you to delete all variables at once, or only those starting with a specific name (a prefix), which is very helpful for clearing out old data from a specific tool.
Summary for the User
Think of this script as a shared digital whiteboard. Instead of every trading robot having its own private notebook, this library creates a common whiteboard where they can write down notes, numbers, and tables. The script handles the "grammar" of that whiteboard—making sure the writing is legible, organizing the rows and columns, and allowing tools to clearly see what others have written or erase old information when it is no longer needed.
//+--------------------------------------------------------------------------------------------------------------------------------------------------+
//| ZH_Global_Chart_Variable_Lib.mq4|
//| Copyright © Zhunko |
//|04.09.2008 - 10.09.2008 MF ZHUNKO vadim@zhunko.ru |
//+--------------------------------------------------------------------------------------------------------------------------------------------------+
//| Áèáëèîòåêà ïðåäíàçíà÷åíà äëÿ ðàáîòû ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè. |
//| Ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ (ãðàôè÷åñêèé îáúåêò), âèäèìàÿ äëÿ ïðîãðàìì òîëüêî îäíîãî îêíà. |
//| ÂÍÈÌÀÍÈÅ!!! Êîëè÷åñòâî çàïèñûâàåìûõ çíàêîâ ñ ó÷¸òîì ðàçäåëèòåëåé âî âñåõ ôóíêöèÿõ íå ìîæåò ïðåâûøàòü 62-õ. |
//+--------------------------------------------------------------------------------------------------------------------------------------------------+
//| 1. Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//| 2. Ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//| 3. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//| 4. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//+--- Ôóíêöèè ñ ãðàôè÷åñêèìè ìàññèâàìè. ------------------------------------------------------------------------------------------------------------+
//| 5. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå. |
//| 6. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñ äàííûìè äâîéíîé òî÷íîñòè. |
//| 7. Ôóíêöèÿ âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà. |
//| 8. Ôóíêöèÿ ìåíÿåò ðàçìåð óêàçàííîãî èçìåðåíèÿ ãðàôè÷åñêîãî ìàññèâà. |
//+--- Ôóíêöèè ñ ãðàôè÷åñêèìè ôàéëàìè. --------------------------------------------------------------------------------------------------------------+
//| 9. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë. |
//|10. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë. |
//|11. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë. |
//|12. Ôóíêöèÿ çàïîëíÿåò çíà÷åíèÿìè äâîéíîé òî÷íîñòè ãëîáàëüíûé ãðàôè÷åñêèé äâóìåðíûé ìàññèâ. |
//|13. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ. |
//|14. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ. |
//|15. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè. |
//|16. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè. |
//+--- Ñëóæåáíûå ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè, ìàññèâàìè è ôàéëàìè. ---------------------------------------------------------------+
//|17. Ôóíêöèÿ êîíòðîëÿ íàëè÷èÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//|18. Ôóíêöèÿ óäàëåíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//|19. Ôóíêöèÿ âîçâðàùàåò èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ïî ïîðÿäêîâîìó íîìåðó â ñïèñêå ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ. |
//|20. Ôóíêöèÿ âîçâðàùàåò îáùåå êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ. |
//|21. Ôóíêöèÿ óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå. |
//|22. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé. |
//+--------------------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2008 Zhunko"
#property link "vadim@zhunko.ru"
#property library
//ææææ Ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 1. Ôóíêöèÿ âîçâðàùàåò ÷èñëîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=========================================================================
// Âîçâðàùàåò ÷èñëîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
double GlobalChartVariableGetDouble (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
{
return (StrToDouble (ObjectDescription (Name)));
}
//====================================================================================================================================================
// 2. Ôóíêöèÿ âîçâðàùàåò ñòðîêîâîå çíà÷åíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.========================================================================
// Âîçâðàùàåò ñòðîêîâå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
string GlobalChartVariableGetStr (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
{
return (ObjectDescription (Name));
}
//====================================================================================================================================================
// 3. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.================================================================
// Óñòàíàâëèâàåò íîâîå ÷èñëîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartVariableSetDouble (string& Name, // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
double& Value, // ×èñëîâîå çíà÷åíèå.
int& Precision) // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
{
int i;
//----
if (Name == "" || Name == "Label")
{
Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
return (false);
}
if (StringLen (Name) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetDouble()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (false);
}
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
return (ObjectSetText (Name, DoubleToStr (Value, Precision), 10, "Areal", EMPTY));
}
//====================================================================================================================================================
// 4. Ôóíêöèÿ óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.===============================================================
// Óñòàíàâëèâàåò íîâîå ñòðîêîâîå çíà÷åíèå ñóùåñòâóþùåé ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
// Åñëè ïåðåìåííàÿ íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool GlobalChartVariableSetStr (string& Name, // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
string& Value) // Ñòðîêîâîå çíà÷åíèå.
{
int i;
//----
if (Name == "" || Name == "Label")
{
Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîé ïåðåìåííîé.");
return (false);
}
if (StringLen (Name) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\". Ñëèøêîì äëèííîå èìÿ ïåðåìåííîé. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"GlobalChartVariableSetStr()\".\nÑëèøêîì äëèííîå èìÿ ïåðåìåííîé.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (false);
}
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
return (ObjectSetText (Name, Value, 10, "Areal", EMPTY));
}
//====================================================================================================================================================
//ææææ Ôóíêöèè ñ ãðàôè÷åñêèìè ìàññèâàìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 5. Ôóíêöèÿ ìåíÿåò çíà÷åíèå âûáðàííîé ÿ÷åéêè â ãðàôè÷åñêîì ìàññèâå.=================================================================================
// Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ìàññèâ. Ìîæíî çàïèñûâàòü öåëûå è äâîéíîé òî÷íîñòè ÷èñëà.
// Âûáîð ïðîèçâîäèòñÿ ïàðàìåòðîì "Precision".  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå TRUE, èíà÷å FALSE.
bool ChartArraySet (string& Name, // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
double& Value, // ×èñëîâîå çíà÷åíèå äëÿ âíåñåíèÿ èçìåíåíèé â ìàññèâå.
int& Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
int& Size0, // Êîëè÷åñòâî ýëåìåíòîâ ïåðâîãî èçìåðåíèÿ.
int& Size1, // Êîëè÷åñòâî ýëåìåíòîâ âòîðîãî èçìåðåíèÿ.
int& Cell0, // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
int& Cell1) // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
{
int i, j, k;
int EndStr1; // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà.
int Length; // Äëèíà âñåãî òåêñòà.
int StartStr2; // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
string Text = ""; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
if (Name == "" || Name == "Label")
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ìàññèâà.");
return (false);
}
if (StringLen (Name) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ñëèøêîì äëèííîå èìÿ ìàññèâà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÑëèøêîì äëèííîå èìÿ ìàññèâà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (false);
}
if ((2 * Size0 * Size1 - 1) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (false);
}
if (Cell0 >= Size0)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
return (false);
}
if (Cell1 >= Size1)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÍîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè ïðåâûøàåò êîëè÷åñòâî ýëåìåíòîâ.");
return (false);
}
if (ObjectFind (Name) == -1) // Åñëè ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸ì íîâûé ñ îäíîé çàïîëíåííîé ÿ÷åéêîé. Âñå îñòàëüíûå çàïîëíÿåì íóëÿìè.
{
for (i = 0; i < Size0; i++) // Öèêë ïåðâîãî èçìåðåíèÿ.
{
for (j = 0; j < Size1; j++) // Öèêë âòîðîãî èçìåðåíèÿ.
{
k++; // Ñ÷¸ò÷èê âñåõ ýëåìåíòîâ.
if (i == Cell0 && j == Cell1) Text = Text + DoubleToStr (Value, Precision); // Åñëè àäðåñ ñîâïàë, çàíîñèì íîâîå çíà÷åíèå.
else Text = Text + "0"; // Âî âñå îñòàëüíûå ÿ÷åéêè çàíîñèì íóëè.
if (j != (Size1 - 1)) Text = Text + ";"; // Óñòàíàâëèâàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
else if (k != Size0 * Size1) Text = Text + "|"; // Óñòàíàâëèâàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
}
}
}
else
{// Åñëè ãðàôè÷åñêèé ìàññèâ ñóùåñòâóåò, ñíà÷àëà ïðîâåðÿåì íà ñîîòâåòñòâèå ðàçìåðîâ èçìåðåíèé.
Text = "|" + ObjectDescription (Name) + ";"; // Âåñü òåêñò.
Length = StringLen (Text); // Äëèíà òåêñòà.
for (i = 0, j = 0, k = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") j++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
if (TextSymbol == ";" || TextSymbol == "|") k++; // Ïðîâåðÿåì íà ðàçäåëèòåëü âòîðîãî èçìåðåíèÿ.
}
k--;
if (j != Size0) // Êîíòðîëü ðàçìåðíîñòè ìàññèâà è çàÿâëåííîãî ïàðàìåòðà ðàçìåðíîñòè â ïåðâîì èçìåðåíèè.
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà â ïåðâîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
return (false);
}
if (k / j != Size1) // Êîíòðîëü ðàçìåðíîñòè ìàññèâà è çàÿâëåííîãî ïàðàìåòðà ðàçìåðíîñòè âî âòîðîì èçìåðåíèè.
{
Print ("Îøèáêà â ôóíêöèè \"ChartArraySet()\". Ðàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size0\".");
Comment ("Îøèáêà â ôóíêöèè \"ChartArraySet()\".\nÐàçìåð ñóùåñòâóþùåãî ìàññèâà âî âòîðîì èçìåðåíèè íå ñîîòâåòñòâóåò çàÿâëåííîìó ïàðàìåòðó \"Size1\".");
return (false);
}
// Èùèì íîìåðà ïîçèöèé äî è ïîñëå ÷èñëà.
for (i = 0, k = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Òåêóùèé ñèìâîë.
if (TextSymbol == ";" || TextSymbol == "|") // Èùèì ðàçäåëèòåëè.
{
if (k == (Cell0 * Size1 + Cell1)) // Åñëè ñîâïàë íîìåð ðàçäåëèòåëÿ ñ íîìåðîì èñêîìîé ïîçèöèè.
{
EndStr1 = i; // Íîìåð ïîçèöèè êîíöà ïåðâîé ñòðîêè äî ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
break; // Âûõîäèì èç öèêëà.
}
k++; // Íîìåð ðàçäåëèòåëÿ.
}
}
for (i++; i < Length; i++) // Ïðîäîëæàåì öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Òåêóùèé ñèìâîë.
if (TextSymbol == ";" || TextSymbol == "|") // Ñëåäóþùèé ðàçäåëèòåëü.
{
StartStr2 = i; // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà âêëþ÷àÿ ðàçäåëèòåëü.
break; // Âûõîäèì èç öèêëà.
}
}
// Ñèíòåçèðóåì íîâóþ ñòðîêó.
Text = StringSubstr (Text, 0, EndStr1 + 1) + DoubleToStr (Value, Precision) + StringSubstr (Text, StartStr2, 0);
Text = StringSubstr (Text, 1, StringLen (Text) - 2); // Óáèðàåì ïåðâûé è ïîñëåäíèé ñëóæåáíûå ðàçäåëèòåëè.
if (StringLen (Text) > 62)
{
Print ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà ñèíòåçà ñòðîêè â ôóíêöèè \"ChartArraySet()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (false);
}
}
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
return (ObjectSetText (Name, Text, 10, "Areal", EMPTY));
}
//====================================================================================================================================================
// 6. Ôóíêöèÿ ÷èòàåò âûáðàííóþ ÿ÷åéêó ãðàôè÷åñêîãî ìàññèâà ñ äàííûìè äâîéíîé òî÷íîñòè.================================================================
// Ôóíêöèÿ âîçâðàùàåò çíà÷åíèå âûáðàííîé ÿ÷åéêè èëè "-1" â ñëó÷àå îøèáêè. Åñëè ìàññèâ îäíîìåðíûé, òî ïàðàìåòð "Cell0" äîëæåí áûòü ðàâåí íóëþ.
double ChartArrayGet (string& Name, // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
int& Cell0, // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
int& Cell1) // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
{
int i, j, k;
int Length; // Äëèíà âñåãî òåêñòà.
int LengthNumber; // Äëèíà èçâëåêàåìîãî ÷èñëà.
int Start; // Ñòàðòîâàÿ ïîçèöèÿ äëÿ èçâëå÷åíèÿ ÷èñëà.
string Text = "|" + ObjectDescription (Name) + ";";
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text);
for (i = 0; i < Length; i++)
{
TextSymbol = StringSubstr (Text, i, 1); // Òåêóùèé ñèìâîë.
if (TextSymbol == "|") // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü ïåðâîé ðàçìåðíîñòè èëè ìàññèâ îäíîìåðíûé.
{
if (j == Cell0) // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè â ïåðâîé ðàçìåðíîñòè.
{
for (; i < Length; i++) // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë.
{
TextSymbol = StringSubstr (Text, i, 1); // Òåêóùèé ñèìâîë.
if (TextSymbol == ";") // Åñëè íàøëè â ñòðîêå ðàçäåëèòåëü âòîðîé ðàçìåðíîñòè.
{
if (k == Cell1) // Åñëè íîìåð ðàçäåëèòåëÿ ñîâïàäàåò ñ íîìåðîì ÿ÷åéêè âî âòîðîé ðàçìåðíîñòè.
{
LengthNumber = i; // Çàïîìèíàåì ïîçèöèþ êîíöà ÷èñëà. Ðàçäåëèòåëü ";" íàõîäèòñÿ ïîñëå èñêîìîãî ÷èñëà.
for (i--; i >= 0; i--) // Ïðîäîëæàåì íà÷àòûé îñíîâíîé öèêë â îáðàòíóþ ñòîðîíó ê íà÷àëó ñòðîêè.
{
TextSymbol = StringSubstr (Text, i, 1); // Òåêóùèé ñèìâîë.
if (TextSymbol == ";" || TextSymbol == "|") // Ïî ñëåäóþùåìó ðàçäåëèòåëþ îïðåäåëÿåì äëèíó ÷èñëà.
{
Start = i + 1;
LengthNumber = LengthNumber - Start;
break;
}
}
return (StrToDouble (StringSubstr (Text, Start, LengthNumber)));
}
k++;
}
}
}
j++;
}
}
return (-1);
}
//====================================================================================================================================================
// 7. Ôóíêöèÿ âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà.==================================================================
// Âîçâðàùàåò ÷èñëî ýëåìåíòîâ â óêàçàííîì èçìåðåíèè ãðàôè÷åñêîãî ìàññèâà, â ïðîòèâíîì ñëó÷àå "-1".
int ChartArrayRange (string& Name, // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
int& RangeIndex) // Èíäåêñ èçìåðåíèÿ.
{
int i, j, k; // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
int Length; // Äëèíà âñåãî òåêñòà.
string Text = "|" + ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text); // Äëèíà òåêñòà.
for (i = 0, j = 0, k = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") j++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
if (TextSymbol == ";" || TextSymbol == "|") k++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
}
if (RangeIndex == 0) return (j); // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ â ïåðâîì èçìåðåíèè.
if (RangeIndex == 1) return ((k - 1) / j); // Âîçâðàùàåì êîëè÷åñòâî ýëåìåíòîâ âî âòîðîì èçìåðåíèè.
return (-1);
}
//====================================================================================================================================================
// 8. Ôóíêöèÿ ìåíÿåò ðàçìåð óêàçàííîãî èçìåðåíèÿ ãðàôè÷åñêîãî ìàññèâà.================================================================================
// Ïðè óñïåøíîì âûïîëíåíèè ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî âñåõ ýëåìåíòîâ, ñîäåðæàùèõñÿ â ìàññèâå ïîñëå èçìåíåíèÿ ðàçìåðà,
// â ïðîòèâíîì ñëó÷àå âîçâðàùàåò -1, è ìàññèâ íå ìåíÿåò ðàçìåðû.
int ChartArrayResize (string& Name, // Èìÿ ãðàôè÷åñêîãî ìàññèâà.
int& RangeIndex, // Èíäåêñ èçìåðåíèÿ.
int& NewSize) // Íîâûé ðàçìåð.
{
int i, j, k, l; // Íîìåð ïîçèöèè íà÷àëà âòîðîé ñòðîêè ïîñëå ÷èñëà.
int Length; // Äëèíà âñåãî òåêñòà.
int Size0; // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
int Size1; // Ðàçìåð âòîðîãî èçìåðåíèÿ.
string StringSize1 = ""; // Ñòðîêà äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
string Text = "|" + ObjectDescription (Name) + ";"; // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
// Ìàññèâû.
string ArraySize0[]; // Òåõíè÷åñêèé ìàññèâ äëÿ ñòðîê âòîðîãî èçìåðåíèÿ.
//----Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.------------------------------------------------------------------------------------------------------------------
if (RangeIndex < 0 || 1 < RangeIndex) // Êîíòðîëü ïàðàìåòðà "Èíäåêñ èçìåðåíèÿ".
{
Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Èíäåêñ èçìåðåíèÿ âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé. RangeIndex = ", RangeIndex);
Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÈíäåêñ èçìåðåíèÿ âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé.\nRangeIndex = ", RangeIndex);
return (-1);
}
if (NewSize < 0) // Êîíòðîëü ïàðàìåòðà "Íîâûé ðàçìåð".
{
Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Íîâûé ðàçìåð âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé. NewSize = ", NewSize);
Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÍîâûé ðàçìåð âûõîäèò çà ïðåäåëû âîçìîæíûõ çíà÷åíèé.\nNewSize = ", NewSize);
return (-1);
}
// Âû÷èñëÿåì ðàçìåð ñóùåñòâóþùåãî ìàññèâà.
Length = StringLen (Text); // Äëèíà òåêñòà.
for (i = 0, j = 0, k = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") j++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
if (TextSymbol == ";" || TextSymbol == "|") k++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
}
Size0 = j; // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
Size1 = (k - 1) / j; // Ðàçìåð âòîðîãî èçìåðåíèÿ.
//----Åñëè òðåáóåòñÿ èçìåíèòü ïåðâîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
if (RangeIndex == 0)
{
if (NewSize < Size0) // Åñëè íîâûé ðàçìåð ìåíüøå, ÷åì ñóùåñòâóþùèé.
{
for (i = 0, j = -1; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") j++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè.
// Åñëè ñîâïàë íîâûé ðàçìåð ñ òåêóùèì ðàçäåëèòåëåì. Îáðåçàåì ñòðîêó è ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
if (j == NewSize) if (ObjectSetText (Name, StringSubstr (Text, 1, i - 1), 10, "Areal", EMPTY) == true) return (j * Size1);
}
}
if (NewSize == Size0) return (k - 1); // Åñëè íîâûé ðàçìåð ðàâåí ñóùåñòâóþùåìó.
if (NewSize > Size0) // Åñëè íîâûé ðàçìåð áîëüøå, ÷åì ñóùåñòâóþùèé.
{
StringSize1 = "|"; // Èíèöèàëèçèðóåì ïåðåìåííóþ ñòðîêè äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
for (i = 0; i < Size1; i++) // Ñèíòåçèðóåì âñþ ñòðîêó îäíîãî íîâîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
{
if (i == (Size1 - 1)) StringSize1 = StringSize1 + "0"; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
else StringSize1 = StringSize1 + "0;";
}
Text = ObjectDescription (Name);
for (i = 0; i < (NewSize - Size0); i++) Text = Text + StringSize1;
// Êîíòðîëü íà äëèíó çàïèñè ìàññèâà ñ íîâûì ðàçìåðîì.
if (StringLen (Text) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return ((Size0 + i) * Size1); // Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
}
}
//----Åñëè òðåáóåòñÿ èçìåíèòü âòîðîå èçìåðåíèå.-----------------------------------------------------------------------------------------------------
if (RangeIndex == 1)
{
if (NewSize < Size1) // Åñëè íîâûé ðàçìåð ìåíüøå, ÷åì ñóùåñòâóþùèé.
{
ArrayResize (ArraySize0, Size0); // Èçìåíÿåì ðàçìåð òåõíè÷åñêîãî ìàññèâà ïî ðàçìåð ãðàôè÷åñêîãî ìàññèâà â ïåðâîì èçìåðåíèè.
for (i = 0; i < Size0; i++) ArraySize0[i] = ""; // Èíèöèàëèçèðóåì òåõíè÷åñêèé ìàññèâ ïóñòûìè ñòðîêàìè.
for (i = 0, j = -1, l = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ.
{
j++; // Ñ÷èòàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
k = 0; // Îáíóëÿåì ñ÷¸ò÷èê ðàçäåëèòåëåé âòîðîãî èçìåðåíèÿ.
}
if (TextSymbol == ";" || TextSymbol == "|") // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
{
k++; // Ñ÷èòàåì ðàçäåëèòåëè âòîðîãî èçìåðåíèÿ.
if (k <= NewSize) l++; // Ñ÷èòàåì âñå íîâûå ýëåìåíòû.
}
if (k <= NewSize) ArraySize0[j] = ArraySize0[j] + TextSymbol; // Ñèíòåçèðóåì ñòðîêó ïåðâîãî èçìåðåíèÿ â ïðåäåëàõ íîâîãî ðàçìåðà âòîðîãî èçìåðåíèÿ.
}
//  ïåðâîé ÿ÷åéêè òåõíè÷åñêîãî ìàññèâà ñèíòåçèðóåì âñþ íîâóþ ñòðîêó äëÿ íîâîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
for (i = 1; i < Size0; i++) ArraySize0[0] = ArraySize0[0] + ArraySize0[i];
// Îòðåçàåì ñëóæåáíûé ñèìâîë ñïåðåäè. Ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
if (ObjectSetText (Name, StringSubstr (ArraySize0[0], 1, 0), 10, "Areal", EMPTY) == true) return (l);
}
if (NewSize == Size1) return (k - 1); // Åñëè íîâûé ðàçìåð ðàâåí ñóùåñòâóþùåìó.
if (NewSize > Size1) // Åñëè íîâûé ðàçìåð áîëüøå, ÷åì ñóùåñòâóþùèé.
{
ArrayResize (ArraySize0, Size0); // Èçìåíÿåì ðàçìåð òåõíè÷åñêîãî ìàññèâà ïî ðàçìåð ãðàôè÷åñêîãî ìàññèâà â ïåðâîì èçìåðåíèè.
for (i = 0; i < Size0; i++) ArraySize0[i] = ""; // Èíèöèàëèçèðóåì òåõíè÷åñêèé ìàññèâ ïóñòûìè ñòðîêàìè.
Text = "|" + ObjectDescription (Name); // Ìàññèâ â ñòðîêîâîì âèäå. Òåêñò. Äîáàâëÿåì ñëóæåáíûå ñèìâîëû.
Length = StringLen (Text); // Äëèíà òåêñòà.
for (i = 0, j = -1, k = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòà.
{
TextSymbol = StringSubstr (Text, i, 1); // Ñèìâîë.
if (TextSymbol == "|") j++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî èçìåðåíèÿ. Ñ÷èòàåì ðàçäåëèòåëè ïåðâîãî èçìåðåíèÿ.
if (TextSymbol == ";" || TextSymbol == "|") k++; // Ïðîâåðÿåì íà ðàçäåëèòåëü ïåðâîãî è âòîðîãî èçìåðåíèé.
ArraySize0[j] = ArraySize0[j] + TextSymbol; // Ñèíòåçèðóåì ñòðîêó ïåðâîãî èçìåðåíèÿ â ïðåäåëàõ íîâîãî ðàçìåðà âòîðîãî èçìåðåíèÿ.
}
StringSize1 = ";"; // Èíèöèàëèçèðóåì ïåðåìåííóþ ñòðîêè äîïîëíÿåìîãî âòîðîãî èçìåðåíèÿ.
for (i = 0, l = 0; i < (NewSize - Size1); i++, l++) // Ñèíòåçèðóåì ÷àñòü ñòðîêè íîâîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
{
if (i == (NewSize - Size1 - 1)) StringSize1 = StringSize1 + "0"; // Ïîñëå ïîñëåäíåãî ýëåìåíòà ðàçäåëèòåëü íå ñòàâèì.
else StringSize1 = StringSize1 + "0;";
}
// Ñèíòåçèðóåì âñþ ñòðîêó îäíîãî ýëåìåíòà ïåðâîãî èçìåðåíèÿ.
for (i = 0; i < Size0; i++) ArraySize0[i] = ArraySize0[i] + StringSize1;
//  ïåðâîé ÿ÷åéêè òåõíè÷åñêîãî ìàññèâà ñèíòåçèðóåì âñþ íîâóþ ñòðîêó äëÿ íîâîãî ðàçìåðà ãðàôè÷åñêîãî ìàññèâà.
for (i = 1; i < Size0; i++) ArraySize0[0] = ArraySize0[0] + ArraySize0[i];
// Îòðåçàåì ñëóæåáíûé ñèìâîë ñïåðåäè.
Text = StringSubstr (ArraySize0[0], 1, 0);
if (StringLen (Text) > 62)
{
Print ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\". Ïîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"ChartArrayResize()\".\nÏîïûòêà ñîçäàòü ìàññèâ ñ êîëè÷åñòâîì çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
// Ìåíÿåì ñâîéñòâà îáúåêòà. Âîçâðàùàåì íîâîå êîëè÷åñòâî ýëåìåíòîâ.
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (k + l * Size0);
}
}
return (-1);
}
//====================================================================================================================================================
//ææææ Ôóíêöèè ñ ãðàôè÷åñêèìè ôàéëàìè. æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// 9. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.==========================================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray1Int (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
int& Array[], // Ìàññèâ äëÿ çàïèñè.
int& Start, // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
int& Count) // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
{
int i;
int Length;
string Text = "";
// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
return (-1);
}
if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ñëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\".\nÑëèøêîì äëèííîå èìÿ ãðàôè÷åñêîãî ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (-1);
}
// Ñèíòåç ñòðîêè äëÿ çàïèñè.
for (i = Start; i < (Start + Count); i++)
{
Text = Text + DoubleToStr (Array[i], 0) + ";";
Length = StringLen (Text) - 1;
if (Length > 62)
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
}
Text = StringSubstr (Text, 0, Length);
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
return (-1);
}
//====================================================================================================================================================
//10. Ôóíêöèÿ çàïèñûâàåò äâóìåðíûé öåëî÷èñëåííûé ìàññèâ â ãðàôè÷åñêèé ôàéë.===========================================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ôàéëà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâûé ãðàôè÷åñêèé ôàéë.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray2Int (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
int& Array[][]) // Ìàññèâ äëÿ çàïèñè.
{
int Size0 = ArrayRange (Array, 0);
int Size1 = ArrayRange (Array, 1);
int i, j;
int Length;
string Text = "";
// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
return (-1);
}
if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (-1);
}
// Ñèíòåç ñòðîêè äëÿ çàïèñè.
for (i = 0; i < Size0; i++)
{
for (j = 0; j < Size1; j++)
{
if (j == (Size1 - 1)) Text = Text + DoubleToStr (Array[i][j], 0) + "|";
else Text = Text + DoubleToStr (Array[i][j], 0) + ";";
Length = StringLen (Text) - 1;
if (Length > 62)
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Int()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
}
}
Text = StringSubstr (Text, 0, Length);
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
return (-1);
}
//====================================================================================================================================================
//11. Ôóíêöèÿ çàïèñûâàåò îäíîìåðíûé ìàññèâ ñ äàííûìè äâîéíîé òî÷íîñòè â ãðàôè÷åñêèé ôàéë.=============================================================
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíûé ãðàôè÷åñêèé îäíîìåðíûé ìàññèâ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray1Double (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
double& Array[], // Ìàññèâ äëÿ çàïèñè.
int& Precision, // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
int& Start, // Íà÷àëüíûé èíäåêñ â ìàññèâå (íîìåð ïåðâîãî çàïèñûâàåìîãî ýëåìåíòà).
int& Count) // Êîëè÷åñòâî çàïèñûâàåìûõ ýëåìåíòîâ.
{
int i;
int Length;
string Text = "";
// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
return (-1);
}
if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (-1);
}
// Ñèíòåç ñòðîêè äëÿ çàïèñè.
for (i = Start; i < (Start + Count); i++)
{
Text = Text + DoubleToStr (Array[i], Precision) + ";";
Length = StringLen (Text) - 1;
if (Length > 62)
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray1Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
}
Text = StringSubstr (Text, 0, Length);
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
return (-1);
}
//====================================================================================================================================================
//12. Ôóíêöèÿ çàïîëíÿåò çíà÷åíèÿìè äâîéíîé òî÷íîñòè ãëîáàëüíûé ãðàôè÷åñêèé äâóìåðíûé ìàññèâ.==========================================================
// Çàïîëíÿåò íîâûìè ýëåìåíòàìè ñóùåñòâóþùåãî ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà.
// Åñëè ãëîáàëüíîãî ãðàôè÷åñêîãî ìàññèâà íå ñóùåñòâóåò, ñîçäà¸òñÿ íîâàÿ ãëîáàëüíûé ãðàôè÷åñêèé îäíîìåðíûé ìàññèâ.
//  ñëó÷àå óñïåõà ôóíêöèÿ âîçâðàùàåò çíà÷åíèå êîëè÷åñòâî çàïèñàííûõ çíàêîâ.  ïðîòèâíîì ñëó÷àå "-1".
int FileChartWriteArray2Double (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
double& Array[][], // Ìàññèâ äëÿ çàïèñè.
int& Precision) // Òî÷íîñòü çàïèñè â çíàêàõ ïîñëå çàïÿòîé.
{
int Size0 = ArrayRange (Array, 0);
int Size1 = ArrayRange (Array, 1);
int i, j;
int Length;
string Text = "";
// Êîíòðîëü âõîäíûõ ïàðàìåòðîâ.
if (Name == "" || Name == "Label") // Êîíòðîëü èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Íåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\".\nÍåäîïóñòèìîå íàçâàíèå ãðàôè÷åñêîãî ôàéëà.");
return (-1);
}
if (StringLen (Name) > 62) // Êîíòðîëü äëèíû èìåíè.
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ñëèøêîì äëèííîå èìÿ ôàéëà. Êîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\".\nÑëèøêîì äëèííîå èìÿ ôàéëà.\nÊîëè÷åñòâî çíàêîâ â èìåíè äîëæíî áûòü ìåíåå 62 çíàêîâ.");
return (-1);
}
// Ñèíòåç ñòðîêè äëÿ çàïèñè.
for (i = 0; i < Size0; i++)
{
for (j = 0; j < Size1; j++)
{
if (j == (Size1 - 1)) Text = Text + DoubleToStr (Array[i][j], Precision) + "|";
else Text = Text + DoubleToStr (Array[i][j], Precision) + ";";
Length = StringLen (Text) - 1;
if (Length > 62)
{
Print ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
Comment ("Îøèáêà â ôóíêöèè \"FileChartWriteArray2Double()\". Ïîïûòêà çàïèñàòü â ìàññèâ êîëè÷åñòâî çíàêîâ áîëåå 62 ñ ó÷¸òîì ðàçäåëèòåëåé.");
return (-1);
}
}
}
Text = StringSubstr (Text, 0, Length);
// Ñîçäà¸ì îáúåêò.
if (ObjectCreate (Name, OBJ_LABEL, 0, 0, 0, 0, 0) == true)
{
if (ObjectFind ("ListGlobalGraphicVariable_0") == -1) // Åñëè ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íåò, òî ñîçäà¸ì åãî è âíîñèì èìÿ ïåðåìåííîé.
{
ObjectCreate ("ListGlobalGraphicVariable_0", OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_0", OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_0", Name, 10, "Areal", EMPTY);
}
else // Åñëè ñïèñîê ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ åñòü, òî äîïîëíÿåì åãî.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó.
{// Èùåì ïåðâûé îòñóòñòâóþùèé îáúåêò èëè ïóñòóþ çàïèñü.
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label")
{// Åñëè íàøëè íîìåð îòñóòñòâóþùåãî îáúåêòà, ñîçäà¸ì åãî è çàïèñûâàåì â í¸ì èìÿ ïåðåìåííîé.
ObjectCreate ("ListGlobalGraphicVariable_" + i, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet ("ListGlobalGraphicVariable_" + i, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name, 10, "Areal", EMPTY);
break; // Âûõîäèì èç öèêëà.
}
}
}
}
ObjectSet (Name, OBJPROP_TIMEFRAMES, EMPTY);
if (ObjectSetText (Name, Text, 10, "Areal", EMPTY) == true) return (Length);
return (-1);
}
//====================================================================================================================================================
//13. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé öåëî÷èñëåííûé ìàññèâ.===============================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray1Int (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
int& Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
int& Start, // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
int& Count) // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
{
int i;
int j = 0;
int Length;
string Text = ObjectDescription (Name) + ";";
string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text);
for (i = 0; i < Length; i++)
{
TextSymbol = StringSubstr (Text, i, 1);
if (TextSymbol == ";")
{
if (Count == j) break;
Array[Start + j] = StrToInteger (TextNumber);
TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
j++;
}
else TextNumber = TextNumber + TextSymbol;
}
return (j);
}
//====================================================================================================================================================
//14. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ.=============================================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ïðèíèìàþùåãî ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray2Int (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
int& Array[][]) // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
{
int Size0 = ArrayRange (Array, 0); // Ðàçìåð ïåðâîãî èçìåðåíèÿ.
int Size1 = ArrayRange (Array, 1); // Ðàçìåð âòîðîãî èçìåðåíèÿ.
int i; // Íîìåð ïîçèöèè â ñòðîêå.
int j = 0; // Íîìåð ÿ÷åéêè ïåðâîãî èçìåðåíèÿ.
int k = 0; // Íîìåð ÿ÷åéêè âòîðîãî èçìåðåíèÿ.
int AmountElement = 0; // Êîëè÷åñòâî ýëåìåíòîâ.
int Length; // Äëèíà ñòðîêè.
string Text = ObjectDescription (Name) + ";"; // Âñÿ ñòðîêà.
string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text); // Äëèíà òåêñòîâîé ñòðîêè.
for (i = 0; i < Length; i++) // Öèêë ïî ýëåìåíòàì òåêñòîâîé ñòðîêè.
{
TextSymbol = StringSubstr (Text, i, 1); // Âûäåëÿåì ñèìâîë.
if (TextSymbol == ";" || TextSymbol == "|" || k == Size1) // Åñëè íàøëè ðàçäåîèòåëü.
{
Array[j][k] = StrToInteger (TextNumber); // Êëàä¸ì â ìàññèâ íàéäåííîå ÷èñëî.
k++; // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
if (TextSymbol == "|" || k == Size1) // Åñëè ðàçäåëèòåëü ïåðâîé ðàçìåðíîñòè èëè ñ÷¸ò÷èê âòîðîé ðàçìåðíîñòè ñîâïàë ñ ðàçìåðîì âòîðîé ðàçìåðíîñòè.
{
j++; // Óâåëè÷èâàåò çíà÷åíèå ñ÷¸ò÷èêà ðàçäåëèòåëåé ïåðâîé ðàçìåðíîñòè.
k = 0; // Îáíóëÿåì ñ÷¸ò÷èê ðàçäåëèòåëåé âòîðîé ðàçìåðíîñòè.
}
AmountElement++; // Ñ÷¸ò÷èê êîëè÷åñòâà ýëåìåíòîâ.
if (j >= Size0) break; // Âûõîäèì èç öèêëà, åñëè ñ÷¸ò÷èê ïåðâîé ðàçìåðíîñòè ðàâåí êîëè÷åñòâó ýëåìåíòîâ ïåðâîé ðàçìåðíîñòè.
TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
}
else TextNumber = TextNumber + TextSymbol; // Ñèíòåçèðóåì ÷èñëî.
}
return (AmountElement);
}
//====================================================================================================================================================
//15. Ôóíêöèÿ ÷èòàåò óêàçàííîå ÷èñëî ýëåìåíòîâ èç ãðàôè÷åñêîãî ôàéëà â îäíîìåðíûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.=====================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray1Double (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
double& Array[], // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
int& Start, // Ñòàðòîâàÿ ïîçèöèÿ äëÿ çàïèñè â ìàññèâ.
int& Count) // Êîëè÷åñòâî ýëåìåíòîâ äëÿ ÷òåíèÿ.
{
int i;
int j = 0;
int Length;
string Text = ObjectDescription (Name) + ";";
string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text);
for (i = 0; i < Length; i++)
{
TextSymbol = StringSubstr (Text, i, 1);
if (TextSymbol == ";")
{
if (Count == j) break;
Array[Start + j] = StrToInteger (TextNumber);
TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
j++;
}
else TextNumber = TextNumber + TextSymbol;
}
return (j);
}
//====================================================================================================================================================
//16. Ôóíêöèÿ ÷èòàåò âñå ýëåìåíòû èç ãðàôè÷åñêîãî ôàéëà â äâóìåðíûé öåëî÷èñëåííûé ìàññèâ äàííûõ äâîéíîé òî÷íîñòè.=====================================
// Ïåðåä ÷òåíèåì äàííûõ ìàññèâ äîëæåí áûòü äîñòàòî÷íîãî ðàçìåðà âî âòîðîì èçìåðåíèè.
// Åñëè ôàéë çàïèñàí áåç ðàçäåëèòåëÿ "|", êàê îäíîìåðíûé ìàññèâ, òî îí áóäåò ïðî÷èòàí ñîãëàñíî ðàçìåðà ìàññèâà.
// Ðàçìåð ìàññèâà ìåíüøèé, ÷åì ðàññòàíîâêà ðàçäåëèòåëåé, ïðèâîäèò ê îøèáêàì ÷òåíèÿ. Ìàññèâ çàïîëíÿåòñÿ íå ïðàâèëüíî.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî ôàêòè÷åñêè ïðî÷èòàííûõ ýëåìåíòîâ.
int FileChartReadArray2double (string& Name, // Èìÿ ãðàôè÷åñêîãî ôàéëà.
double& Array[][]) // Ìàññèâ, êóäà äàííûå áóäóò çàãðóæåíû.
{
int Size0 = ArrayRange (Array, 0); // Ðàçìåð ïåðâîé ðàçìåðíîñòè.
int Size1 = ArrayRange (Array, 1); // Ðàçìåð âòîðîé ðàçìåðíîñòè.
int i; // Íîìåð ïîçèöèè â ñòðîêå.
int j = 0; // Íîìåð ÿ÷åéêè ïåðâîé ðàçìåðíîñòè.
int k = 0; // Íîìåð ÿ÷åéêè âòîðîé ðàçìåðíîñòè.
int AmountElement = 0; // Êîëè÷åñòâî ýëåìåíòîâ.
int Length; // Äëèíà ñòðîêè.
string Text = ObjectDescription (Name) + ";"; // Âñÿ ñòðîêà.
string TextNumber = ""; // Ïðåîáðàçóåìîå ÷èñëî â ñòðîêîâîì âèäå.
string TextSymbol = ""; // Ñòðîêîâûé ñèìâîë.
//----
Length = StringLen (Text);
for (i = 0; i < Length; i++)
{
TextSymbol = StringSubstr (Text, i, 1);
if (TextSymbol == ";" || TextSymbol == "|" || k == Size1)
{
Array[j][k] = StrToInteger (TextNumber);
k++;
if (TextSymbol == "|" || Size1 == k)
{
j++;
k = 0;
}
AmountElement++;
if (j >= Size0) break;
TextNumber = ""; // Èíèöèàëèçèðóåì çàíîâî.
TextSymbol = ""; // Èíèöèàëèçèðóåì çàíîâî.
}
else TextNumber = TextNumber + TextSymbol;
}
return (AmountElement);
}
//====================================================================================================================================================
//ææææ Ñëóæåáíûå ôóíêöèè ñ ãëîáàëüíûìè ãðàôè÷åñêèìè ïåðåìåííûìè, ìàññèâàìè è ôàéëàìè. ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//17. Ôóíêöèÿ êîíòðîëÿ íàëè÷èÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=====================================================================================
// Âîçâðàùàåò çíà÷åíèå TRUE, åñëè ãëîáàëüíàÿ ãðàôè÷åñêàÿ ïåðåìåííàÿ ñóùåñòâóåò, èíà÷å âîçâðàùàåò FALSE.
bool GlobalChartVariableCheck (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
{
if (ObjectFind (Name) == -1) return (false);
else return (true);
}
//====================================================================================================================================================
//18. Ôóíêöèÿ óäàëåíèÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.=============================================================================================
// Óäàëåíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ñ óêàçàííûì èìåíåì.
// Ïðè óñïåøíîì óäàëåíèè ôóíêöèÿ âîçâðàùàåò TRUE, èíà÷å FALSE.
bool GlobalChartVariableDel (string& Name) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.
{
int i;
//----
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ïåðåìåííûõ.
{// Åñëè íàøëè óäàëÿåìóþ ïåðåìåííóþ.
if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == Name)
{
for (; i < 100; i++) // Ïðîäîëæàåì íà÷àòûé öèêë ïî ñïèñêó ïåðåìåííûõ. Ñîðòèðîâêà.
{
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1 || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "")
{// Óäàëÿåì ïîñëåäíèå ïóñòûå ñòðîêè â ñïèñêå ãðàôè÷åñêèõ ïåðåìåííûõ.
for (; ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label"; i--) ObjectDelete ("ListGlobalGraphicVariable_" + i);
// Âûõîäèì èç öèêëà, çàâåðøàåì ôóíêöèþ óäàëåíèåì ãðàôè÷åñêîé ïåðåìåííîé, åñëè ñëåäóþùåãî îáúåêòà íåò èëè îí íå èìååò îïèñàíèÿ.
return (ObjectDelete (Name));
}
// Ïåðåíîñèì ñëåäóþùèå çàïèñè íà îñâîáîäèâøååñÿ ìåñòî.
ObjectSetText ("ListGlobalGraphicVariable_" + i, ObjectDescription (StringConcatenate("ListGlobalGraphicVariable_", i + 1)), 10, "Areal", EMPTY);
}
}
}
return (ObjectDelete (Name));
}
//====================================================================================================================================================
//19. Ôóíêöèÿ âîçâðàùàåò èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé ïî ïîðÿäêîâîìó íîìåðó â ñïèñêå ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.======================
// Êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ íå ìîæåò áûòü áîëüøå 100. Ïåðâûé èíäåêñ ðàâåí íóëþ. Ïîñëåäíèé èíäåêñ ðàâåí 99.
// Åñëè ïîä èñêîìûì èíäåêñîì íåò ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, òî ôóíêöèÿ âåðí¸ò ïóñòóþ ñòðîêó.
string GlobalChartVariableName (int& Index) // Ïîðÿäêîâûé íîìåð â ñïèñêå ãëîáàëüíûõ ïåðåìåííûõ. Äîëæåí áûòü áîëüøèì èëè ðàâíûì 0 è ìåíüøèì, ÷åì GlobalChartVariablesTotal().
{
return (ObjectDescription ("ListGlobalGraphicVariable_" + Index));
}
//====================================================================================================================================================
//20. Ôóíêöèÿ âîçâðàùàåò îáùåå êîëè÷åñòâî ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.==========================================================================
//  ñëó÷àå îøèáêè âîçâðàùàåò "-1".
int GlobalChartVariablesTotal()
{
int i;
string Name;
//----
for (i = 0; i < 100; i++)
{
Name = "ListGlobalGraphicVariable_" + i;
if (ObjectFind (Name) == -1 || ObjectDescription (Name) == "" || ObjectDescription (Name) == "Label") return (i);
}
return (-1);
}
//====================================================================================================================================================
//21. Ôóíêöèÿ óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.==============================================================================================
// Óäàëÿåò ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå. Åñëè ïðåôèêñ äëÿ èìåíè íå çàäàí, òî óäàëÿþòñÿ âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
//  ïðîòèâíîì ñëó÷àå óäàëÿþòñÿ òîëüêî òå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå, èìåíà êîòîðûõ íà÷èíàþòñÿ íà óêàçàííûé ïðåôèêñ.
// Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî óäàëåííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ â ïðîòèâíîì ñëó÷àå âîçâðàùàåò "-1".
int GlobalChartVariablesDeleteAll (string& PrefixName) // Ïðåôèêñ èìåíè óäàëÿåìûõ ãëîáàëüíûõ ïåðåìåííûõ.
{
int AmountDelete; // Êîëè÷åñòâî óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
int i, j;
int Length; // Äëèíà ñòðîêè.
//----
if (PrefixName == "") // Åñëè ïðåôèêñ íå çàäàí, òî óäàëÿåì âñå ãëîáàëüíûå ãðàôè÷åñêèå ïåðåìåííûå.
{
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
{
if (ObjectFind ("ListGlobalGraphicVariable_" + i) == -1) return (i); // Çàâåðøàåì ôóíêöèþ, åñëè ñëåäóþùåé çàïèñè íåò.
ObjectDelete (ObjectDescription ("ListGlobalGraphicVariable_" + i)); // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
ObjectDelete ("ListGlobalGraphicVariable_" + i); // Óäàëÿåì ÷àñòü ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
}
}
else // Åñëè ïðåôèêñ çàäàí, òî óäàëÿåì ïî ìàñêå.
{// Óäàëÿåì íàéäåííûå ãðàôè÷åñêèå ïåðåìåííûå è îáíóëÿåì çàïèñè î íèõ â ñïèñêå.
Length = StringLen (PrefixName);
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
{
if (StringSubstr (ObjectDescription ("ListGlobalGraphicVariable_" + i), 0, Length) == PrefixName)
{
AmountDelete++; // Ñ÷¸ò÷èê óäàë¸ííûõ ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
ObjectDelete (ObjectDescription ("ListGlobalGraphicVariable_" + i)); // Óäàëÿåì ãëîáàëüíóþ ãðàôè÷åñêóþ ïåðåìåííóþ.
ObjectSetText ("ListGlobalGraphicVariable_" + i, "", 10, "Areal", EMPTY); // Óäàëÿåì èìÿ èç ñïèñêà.
}
}
// Ñîðòèðîâêà. Çàïèñè ñäâèãàåì â íà÷àëî íà ñâîáîäíûå ìåñòà.
for (i = 0; i < 100 && ObjectFind ("ListGlobalGraphicVariable_" + j) != -1; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ. Âûõîäèì èç öèêëà, åñëè ñëåäóþùåãî îáúåêòà (çàïèñè) íåò.
{
if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label") // Åñëè íàøëè ïóñòóþ ïîçèöèþ.
{
j = i; // Íîìåð ïåðâîé ïóñòîé ïîçèöèè â ñïèñêå.
// Ïðîäîëæàåì íà÷àòûé öèêë ïî ñïèñêó ïåðåìåííûõ. Âûõîäèì èç öèêëà, åñëè ñëåäóþùåãî îáúåêòà (çàïèñè) íåò.
for (j++; j < 100 && ObjectFind ("ListGlobalGraphicVariable_" + j) != -1; j++)
{// Èùåì ñëåäóþùóþ çàíÿòóþ ñòðîêó.
if (ObjectDescription ("ListGlobalGraphicVariable_" + j) != "" && ObjectDescription ("ListGlobalGraphicVariable_" + j) != "Label")
{// Ïåðåíîñèì ñëåäóþùèå çàïèñè íà îñâîáîäèâøååñÿ ìåñòî.
ObjectSetText ("ListGlobalGraphicVariable_" + i, ObjectDescription ("ListGlobalGraphicVariable_" + j), 10, "Areal", EMPTY);
ObjectSetText ("ListGlobalGraphicVariable_" + j, "", 10, "Areal", EMPTY); // Íàéäåííóþ çàïîëíåííóþ çàïèñü îñâîáîæäàåì.
break; // Âûõîäèì èç áëèæàéøåãî öèêëà.
}
}
}
}
// Óäàëÿåì ïîñëåäíèå ïóñòûå ñòðîêè â ñïèñêå ãðàôè÷åñêèõ ïåðåìåííûõ.
for (; ObjectDescription ("ListGlobalGraphicVariable_" + i) == "" || ObjectDescription ("ListGlobalGraphicVariable_" + i) == "Label"; i--) ObjectDelete ("ListGlobalGraphicVariable_" + i); // Óäàëÿåì ÷àñòü ñïèñêà ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
return (AmountDelete); // Çàâåðøàåì ôóíêöèþ.
}
return (-1);
}
//====================================================================================================================================================
//22. Ôóíêöèÿ ìåíÿåò íàçâàíèå ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé.======================================================================================
// Âîçâðàùàåò TRUE, åñëè ïåðåèìåíîâàíèå ïðîøëî óñïåøíî.  ïðîòèâíîì ñëó÷àå - FALSE.
bool RenamingGlobalChartVariable (string& Name1, // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé ïåðåìåííîé, êîòîðîå òðåáóåòñÿ èçìåíèòü.
string& Name2) // Èìÿ ãëîáàëüíîé ãðàôè÷åñêîé, íà êîòîðîå òðåáóåòñÿ èçìåíèòü.
{
int i;
// Ñîçäà¸ì íîâûé îáúåêò (íîâóþ ïåðåìåííóþ) ñî ñâîéñòâàìè ïåðåèìåííóåìîãî.
ObjectCreate (Name2, OBJ_LABEL, 0, 0, 0, 0, 0);
ObjectSet (Name2, OBJPROP_TIMEFRAMES, EMPTY);
ObjectSetText (Name2, ObjectDescription (Name1), 10, "Areal", EMPTY); // Ïåðåíîñèì îïèñàíèå íà íîâûé îáúåêò.
// Çàìåíÿåì â ñïèñêå èìÿ ïåðåìåííîé íà íîâîå.
for (i = 0; i < 100; i++) // Öèêë ïî ñïèñêó ãëîáàëüíûõ ãðàôè÷åñêèõ ïåðåìåííûõ.
{
if (ObjectDescription ("ListGlobalGraphicVariable_" + i) == Name1)
{
ObjectSetText ("ListGlobalGraphicVariable_" + i, Name2, 10, "Areal", EMPTY); // Íàéäåííóþ çàïîëíåííóþ çàïèñü îñâîáîæäàåì.
break;
}
}
return (ObjectDelete (Name1)); // Óäàëÿåì ñòàðóþ ïåðåìåííóþ è âîçâðàùàåì ñîñòîÿíèå ïðîâåä¸ííîé îïåðàöèè.
}
//====================================================================================================================================================
//ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Comments