init function defined - start function's parameters will be ignored as expert properties - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
С чего Вы сделали такой вывод? Судя по тексту сообщения, компилятор сообщает о том, что из-за определения функции init, параметры функции start будут игнорироваться как свойства советника. Белиберда какая-то.
Функции init и deinit прекрасно работают в пользовательских библиотеках. Наверное, Вы плохо помните, что именно написано в справке.
Чего же людям головы морочить и играть в угадайку. У вас все коды на руках. Спланировали бы эксперимент и потом людям рассказали. Кроме того, в справке, бывает, написано по русски и на английском разные вещи.
Я никому не морочу голову и в угадайку не играю. Какие тут могут быть эксперименты? Я не знаю, откуда появляется это предупреждение и каким экспериментом определить точные причины его возникновения. Оно произвольно появляется и исчезает, при том, что функции init и deinit как были в библиотеке с самого начала, так никуда и не девались. А никакой функции start, о которой также говорится в тексте предупреждения, в библиотеке, разумеется, не было и нет. Вопрос был конкретно для тех, кто сталкивался с этим предупреждением, и точно знает, в каких случаях оно должно появляться. Если пользователям это не ясно, то было бы отлично, если бы отреагировали разработчики терминала. В справке и на форуме упоминания об этом предупреждении нет.
С чего Вы сделали такой вывод? Судя по тексту сообщения, компилятор сообщает о том, что из-за определения функции init, параметры функции start будут игнорироваться как свойства советника. Белиберда какая-то.
Функции init и deinit прекрасно работают в пользовательских библиотеках. Наверное, Вы плохо помните, что именно написано в справке.
Может неправильно выразился. Системные функции, конечно, можно объявить в библиотеке. К чему это приведёт - не знаю. Но точно, что Вы не сможете их использовать за пределами библиотеки.
Переименуйте Ваши функции. Хотя бы так: init --> Init.
Может неправильно выразился. Системные функции, конечно, можно объявить в библиотеке. К чему это приведёт - не знаю. Но точно, что Вы не сможете их использовать за пределами библиотеки.
Переименуйте Ваши функции. Хотя бы так: init --> Init.
Функции init и deinit в библиотеке успешно служат той же самой цели, что и в советниках и индикаторах - автоматически выполняются терминалом при инициализации и деинициализации советника, скрипта или индикатора, использующего данную библиотеку, без необходимости их вызывать явно из функций init и deinit самого советника/индикатора. Предупреждение, о котором идет речь, не связано с использованием в библиотеке этих функций (точнее, может как-то и связано, но я не знаю, как) - так как я их использую в этой же библиотеке долгое время без всяких предупреждений. Зачем их переименовывать, если они успешно служат своей цели?
Функции init и deinit в библиотеке успешно служат той же самой цели, что и в советниках и индикаторах - автоматически выполняются терминалом при инициализации и деинициализации советника, скрипта или индикатора, использующего данную библиотеку, без необходимости их вызывать явно из функций init и deinit самого советника/индикатора. Предупреждение, о котором идет речь, не связано с использованием в библиотеке этих функций (точнее, может как-то и связано, но я не знаю, как) - так как я их использую в этой же библиотеке долгое время без всяких предупреждений. Зачем их переименовывать, если они успешно служат своей цели?
Вы попробовали? Это же не сложно. Всего лишь два символа изменить.
В документации явно не прописано про специальные функции в библиотеке. Там написано про инициализацию и деинициализацию модуля. Модуль может быть любой.
Про start есть это:
Опять ничего про библиотеки не написано. Возможно в новом компиляторе чего-нибудь поменяли. И это не противоречит справке. Просто ранее Вы использовали недокументированные возможности. Теперь их больше нет. Проверте. Тем более, что это не сложно. Займёт 10 секунд.
В документации явно не прописано про специальные функции в библиотеке. Там написано про инициализацию и деинициализацию модуля. Модуль может быть любой.
Просто ранее Вы использовали недокументированные возможности.
Я не хочу гадать, какие там недокументированные возможности я мог нарушить. Я задал вопрос на официальном форуме разработчиков, надеясь на точный и однозначный ответ, а не гадание на кофейной гуще. Функции инициализации и деинициализации библиотечного модуля прекрасно работают. Если функцию init убрать, то предупреждение исчезает. Но о чем было предупреждение? О том, что функцию init нельзя использовать в библиотечном модуле? Нет, это не так. Предупреждение было о чем-то неведомом, что, тем не менее, связано каким-то образом с функцией init. Моя задача - не избавиться от этого предупреждения, а точно понять, по какой причине оно вылезает.
Я не хочу гадать, какие там недокументированные возможности я мог нарушить. Я задал вопрос на официальном форуме разработчиков, надеясь на точный и однозначный ответ, а не гадание на кофейной гуще. Функции инициализации и деинициализации библиотечного модуля прекрасно работают. Если функцию init убрать, то предупреждение исчезает. Но о чем было предупреждение? О том, что функцию init нельзя использовать в библиотечном модуле? Нет, это не так. Предупреждение было о чем-то неведомом, что, тем не менее, связано каким-то образом с функцией init. Моя задача - не избавиться от этого предупреждения, а точно понять, по какой причине оно вылезает.
Вот выяснили наконец-то! Считаю, что это ошибка компилятора. Сообщите в техподдержку или в тему выше про 500 билд.
Конечно, обидно, что инит и деинит в библиотеке не будут работать. Ведь, MQL4-библиотеки единственная возможность хоть как-то ООП использовать в MQL4.
Вот выяснили наконец-то! Считаю, что это ошибка компилятора. Сообщите в техподдержку или в тему выше про 500 билд.
Конечно, обидно, что инит и деинит в библиотеке не будут работать. Ведь, MQL4-библиотеки единственная возможность хоть как-то ООП использовать в MQL4.
Простите, что Вы выяснили, и почему инит и деинит не будут работать? :)
1) Они прекрасно работают, предупреждение им никак не мешает
2) В тесте предупреждения нет ни слова о том, что init не будет работать или не будет запускаться и т.п. Там написана какая-то белиберда! Какой смысл в предложении "init function defined - start function's parameters will be ignored as expert properties"?
3) Я не обновлял билд, у меня стоит 482 :)
МТ4 есть достаточное количество недокументированных возможностей и фич, и вот они имеют свойство в один прекрасный момент заканчиваться с новым билдом. Хорошо бы этот момент выяснить.
Почему Вы считаете возможность использовать init и deinit в библиотеках недокументированной? В справке написано:
"init() - функция, вызывающаяся в процессе инициализации модуля."
"deinit() - функция, вызывающаяся в процессе деинициализации модуля."
Пользовательская библиотека является отдельным модулем. Соответственно, возможность использования init и deinit в библиотеках является документированной.