вопрос по глобальным переменным

 
Приветствую всех!

Насколько я понимаю, глобальные переменные сохраняются в файле gvariables.dat.
Однако вопрос - когда они там сохраняются? В момент, когда мы вызываем функцию
GlobalVariableSet? Или когда мы закрываем MT4?

Вопрос вот в связи с чем - представим, что мы сохранили число в глобальной
переменной, а тут отключилось питание. Получим ли мы сохраненное значение
из переменной после восстановления питания и загрузки MT4?
 
Изменённые глобальные переменные сохраняются на диск в момент закрытия клиентского терминала. При отключении электричества или при креше сохранения не произойдёт.

Для гарантированного сохранения используйте файлы.
 
Изменённые глобальные переменные сохраняются на диск в момент закрытия клиентского терминала. При отключении электричества или при креше сохранения не произойдёт.

Для гарантированного сохранения используйте файлы.

Спасибо за ответ.

А хорошо бы сделать функцию принудительного сохранения
глобальных переменных на диск....
 
Еще раз:
Изменённые глобальные переменные сохраняются на диск в момент закрытия клиентского терминала.
 
Еще раз:
Изменённые глобальные переменные сохраняются на диск в момент закрытия клиентского терминала.


Типа для тупых? Ну-ну...

Еще раз: Хорошо бы сделать функцию принудительного сохранения
глобальных переменных на диск.

Например GlobalVariablesSave();
Которая бы сохраняла переменные не только в момент закрытия
клиентского терминала, но и в процессе работы
.

Разработчики экспертов могли бы вставлять ее в критичных
местах кода и в результате были бы уверены, что в случае
крэша точно можно "поднять" некоторые данные из глобальных
переменных.

Теперь надеюсь ясна идея?

Впрочем, конечно можно сохранять все и в файлах.
Но для хранения переменных в файлах каждый раз нужно
свой "парсер" писать. В то время как для целей "подъема"
эксперта после крэша глобалок вполне бы хватило.
 
Вообще-то, глобальные переменные были задуманы для взаимодействия разных экспертов, и только во вторую очередь для сохранения неких значений между запусками.

Если мы реализуем сохранение глобальных переменных на диск после каждой модификации, мы серьёзно замедлим работу программ. То есть, решение одной, конкретно Вашей, задачи повлечёт за собой проблемы для других пользователей.
 
Вообще-то, глобальные переменные были задуманы для взаимодействия разных экспертов, и только во вторую очередь для сохранения неких значений между запусками.

Если мы реализуем сохранение глобальных переменных на диск после каждой модификации, мы серьёзно замедлим работу программ. То есть, решение одной, конкретно Вашей, задачи повлечёт за собой проблемы для других пользователей.


Не знаю как у Вас, а у меня компьютер... персональный. :)

Так что как от использования мной функции принудительного
сохранения в моем эксперте на моем компьютере могут пострадать
другие пользователи никак не пойму.

Более того - если следовать Вашей логике, то эти гипотетические
пользователи могут пострадать и от сохранения мной данных в
"обычный" файл. :)

Вообще же - функцию GlabalVariablesSave() вставляем в коде эксперта
не после каждой модификации переменной, а когда это критично для
конкретного эксперта
. То есть - сам автор решает, когда нужно (критично)
сохранить глобалки, а когда нет. Из эксперта вызывается эта функция,
а не при каждой модификации. Ну вот есть же функция FileFlush(), например!
Причина обращения: