Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В библиотеке MQL5 уже больше 1500 программ. Поделись и ты своей!
Alexey Navoykov
3958
Alexey Navoykov 2012.02.09 01:04 

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

o_O
Модератор
23314
o_O 2012.02.09 07:04  
может WindowExpertName ?
Комбинатор
15649
Комбинатор 2012.02.09 07:44  
Ага, должно помочь.
Dmitry Fedoseev
41225
Dmitry Fedoseev 2012.02.09 08:10  
WindowExpertName() возвращает имя импротируемого эксперта. Не подойдет.
Комбинатор
15649
Комбинатор 2012.02.09 08:13  
Тогда ручками -- Init(true) и Init(false)
Alexey Navoykov
3958
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() также возвращает этот путь к файлу. И тогда можно без проблем проверить, что файл импортирован, по наличию символов "." или "\". Это конечно не универсальное решение, т.к. файл может быть вызван без указания пути, но для собственного пользования сгодится.

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

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