#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#define GV_NAME "TestGlobalVariableGet"
#define GV_VALUE 1.23
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- установим значение в глобальную переменную клиентского терминала с именем GV_NAME
if(!GlobalVariableSetValue(GV_NAME, GV_VALUE))
return;
//--- получим вещественное значение глобальной переменной клиентского терминала с именем GV_NAME
//--- так как при использовании первой формы вызова GlobalVariableGet ноль является признаком ошибки,
//--- при чтении результата необходимо анализировать код последней ошибки
double dvalue=GlobalVariableGet(GV_NAME);
if(dvalue==0 && GetLastError()!=0)
{
Print("GlobalVariableGet() failed. Error ", GetLastError());
return;
}
//--- покажем полученный результат
PrintFormat("The first form of the GlobalVariableGet() function call returned the value %.2f", dvalue);
//--- установим нулевое значение в глобальную переменную клиентского терминала с именем GV_NAME
if(!GlobalVariableSetValue(GV_NAME, 0))
return;
//--- при помощи первой формы вызова получим булево значение глобальной переменной клиентского терминала с именем GV_NAME
bool bvalue=GlobalVariableGet(GV_NAME);
if(!bvalue && GetLastError()!=0)
{
Print("GlobalVariableGet() failed. Error ", GetLastError());
return;
}
//--- покажем полученный результат
PrintFormat("The first form of the GlobalVariableGet() function call returned the value %.2f with type bool as %s", bvalue, (string)bvalue);
//--- установим не нулевое значение в глобальную переменную клиентского терминала с именем GV_NAME
if(!GlobalVariableSetValue(GV_NAME, GV_VALUE*100.0))
return;
//--- ещё раз прочитаем булево значение глобальной переменной клиентского терминала с именем GV_NAME
bvalue=GlobalVariableGet(GV_NAME);
if(!bvalue && GetLastError()!=0)
{
Print("GlobalVariableGet() failed. Error ", GetLastError());
return;
}
//--- покажем полученный результат
PrintFormat("The first form of the GlobalVariableGet() function call returned the value %.2f with type bool as %s", bvalue, (string)bvalue);
//--- получим вещественное значение глобальной переменной клиентского терминала с именем GV_NAME при помощи второй формы вызова GlobalVariableGet
if(!GlobalVariableGet(GV_NAME, dvalue))
{
Print("GlobalVariableGet() failed. Error ", GetLastError());
return;
}
//--- полученное вещественное значение преобразуем в целочисленное с типом long и покажем результат
long lvalue=(long)dvalue;
PrintFormat("The second form of the GlobalVariableGet() function call returned the value %.2f with type long as %I64d", dvalue, lvalue);
//--- удалим глобальную переменную клиентского терминала с именем GV_NAME после использования
if(!GlobalVariableDel(GV_NAME))
{
Print("GlobalVariableDel() failed. Error ",GetLastError());
}
/*
результат:
The first form of the GlobalVariableGet() function call returned the value 1.23
The first form of the GlobalVariableGet() function call returned the value 0.00 with type bool as false
The first form of the GlobalVariableGet() function call returned the value 1.00 with type bool as true
The second form of the GlobalVariableGet() function call returned the value 123.00 with type long as 123
*/
}
//+------------------------------------------------------------------+
//| Устанавливает значение в глобальную переменную терминала. |
//| При отсутствии переменной, создаёт её |
//+------------------------------------------------------------------+
bool GlobalVariableSetValue(const string gv_name, const double value)
{
if(GlobalVariableSet(gv_name, value)==0)
{
Print("GlobalVariableSet() failed. Error ",GetLastError());
return(false);
}
return(true);
}
|