Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйтесь продавцом и начните зарабатывать!
Alexey Navoykov
3979
Alexey Navoykov 2012.02.09 01:04 

При первом вызове внешней функции из файла .ex4 естественно первым делом запускается init() этого файла. Можно ли как-то в этом ините определить, что он запущен не родным советником, а вызван извне?

o_O
Модератор
23616
o_O 2012.02.09 07:04  
может WindowExpertName ?
Комбинатор
15776
Комбинатор 2012.02.09 07:44  
Ага, должно помочь.
Dmitry Fedoseev
42648
Dmitry Fedoseev 2012.02.09 08:10  
WindowExpertName() возвращает имя импротируемого эксперта. Не подойдет.
Комбинатор
15776
Комбинатор 2012.02.09 08:13  
Тогда ручками -- Init(true) и Init(false)
Alexey Navoykov
3979
Alexey Navoykov 2012.02.10 18:47  
TheXpert:
Тогда ручками -- Init(true) и Init(false)

Это ничего не даст. Ведь сначала запустится init(), без всяких параметров. А уже потом вызываемая пользователем функция Init(...).

WindowExpertName() действительно не подходит в общем случае. Но можно в вызывающем коде явно указывать путь (относительный) к импортируемому файлу: "..\filename.ex4", либо "..\indicators\filename.ex4", либо "..\scripts\filename.ex4", смотря в какой папке этот файл (изначально мы находимся в папке libraries). В этом случае WindowExpertName() также возвращает этот путь к файлу. И тогда можно без проблем проверить, что файл импортирован, по наличию символов "." или "\". Это конечно не универсальное решение, т.к. файл может быть вызван без указания пути, но для собственного пользования сгодится.

Если у кого есть более надёжное решение этой задачи, то предлагайте.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий