Проверка существования и времени последнего действия
Как мы видели в предыдущем разделе, проверить существование глобальной переменной можно, попытавшись прочитать её значение: если это не приведет к появлению кода ошибки в _LastError, значит, глобальная переменная существует, причем мы уже получили её величину и можем использовать в алгоритме. Однако, если в каких-то условиях требуется лишь проверить существование, но не считывать глобальную переменную, более удобно применить другую функцию, специально предназначенную для этого: GlobalVariableCheck.
Существует и еще один вариант проверки — с помощью функции GlobalVariableTime. Как ясно из её названия, она позволяет узнать время последнего использования переменной. Но если переменной не существует, то и время её использования отсутствует, то есть равно 0.
bool GlobalVariableCheck(const string name)
Функция проверяет существование глобальной переменной с указанным именем и возвращает результат: true (переменная есть) или false (переменной нет).
datetime GlobalVariableTime(const string name)
Функция возвращает время последнего использования глобальной переменной с указанным именем. Фактом использования может быть модификация или чтение значения переменной.
Проверка переменной на существование с помощью GlobalVariableCheck или получение её времени посредством GlobalVariableTime не меняют времени использования.
В скрипте GlobalsRunCheck.mq5 мы слегка дополним код из GlobalsRunCount.mq5, чтобы в самом начале функции OnStart проверять наличие переменной и время её использования.
void OnStart()
|
Далее идет код без изменений. Но обратите внимание, что переменная gv, определенная через __FILE__, на этот раз будет содержать новое имя скрипта "GlobalsRunCheck.mq5" в качестве имени глобальной переменной (т.е. каждый скрипт у нас имеет свой глобальный счетчик).
Все запуски кроме самого первого покажут значение true от функции GlobalVariableCheck (переменная существует), а время переменной — с предыдущего запуска. Вот пример журнала:
GlobalVariableCheck(gv)=false / ok
|