Нельзя объявлять одну функцию в теле другой.
Нельзя объявлять одну функцию в теле другой.
Спасибо Rosh, помогло. Убрал описание void DelObj() из int init_а и ошибки исчезли.
Но непонятно почему. В "Справочник MQL4 - Основы языка - Функции - Вызов функции" написано
"Функция может быть объявлена или описана в любом месте программы:"?
Однако, описать функцию void DelObj()
{
ObjectDelete("sM1");
ObjectDelete("sM5");
ObjectDelete("sM15");
ObjectDelete("sM30");
ObjectDelete("sH1");
ObjectDelete("sH4");
ObjectDelete("D");
ObjectDelete("W");
ObjectDelete("Mn");
}
так и не удалось. МЕ ругается на неё предупреждением Function "DelObj" is not referenced and will be removed from exp-file и указывает на первую строку программы //+------------------------------------------------------------------+
Просьба, если возможно, сформулировать термины " объявление" "описание", "вызов".
Всегда вызывает уважение и доверие своей компетентностью труд и, тем более, нормативный документ, начинающийся разделом "Терминология".
Думаю, если в документации MQL появится такой раздел, то язык только выиграет от этого по причине ясности, ведь он рассчитан скорее на users, чем на профессионалов-программистов.
Еще раз просмотрел весь Справочник MQL4 на предмет запрета объявления функции в теле другой, но обнаружил только, что, например, к термину "ПЕРЕМЕННАЯ" применяется 10 следующих существенных терминов:
объявление;
объявление на глобальном уровне MQL программы;
объявление на глобальном уровне терминала;
определение;
описание;
инициализация явная;
инициализация неявная;
присвоение;
передача;
состояние переменной.
P.S. Обновил ссылки в предыдущем посту, теперь должны нормально открываться.
Всем попутных трендов,
с Уважением, ALGUS.
МЕ ругается на неё предупреждением Function "DelObj" is not referenced and will be removed from exp-file и указывает на первую строку программы
Это обозначает, что Вы эту функцию (DelObj()) не вызываете - потому линкер ее из исполняемого файла и удаляет как ненужную - это нормально. Скорее всего Вы пропустили вызов этой функции в функции deinit()...
Успехов.
[/quote]
Это обозначает, что Вы эту функцию (DelObj()) не вызываете - потому линкер ее из исполняемого файла и удаляет как ненужную - это нормально. Скорее всего Вы пропустили вызов этой функции в функции deinit()...
Успехов.
[/quote]
Благодарю, Vladislav, еще не проверял, но, похоже, это так. Я компилировал только часть индикатора для контроля и DelObj() еще нигде не вызывал.
Попутных трендов,
с Уважением, ALGUS.
Это обозначает, что Вы эту функцию (DelObj()) не вызываете - потому линкер ее из исполняемого файла и удаляет как ненужную - это нормально. Скорее всего Вы пропустили вызов этой функции в функции deinit()...
Успехов.
[/quote]
Благодарю, Vladislav, еще не проверял, но, похоже, это так. Я компилировал только часть индикатора для контроля и DelObj() еще нигде не вызывал.
Попутных трендов,
с Уважением, ALGUS.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Начал делать индикатор, сделал заготовку в мастере, скопировал из работающего предварительного варианта индикатора кусок кода - МЕ выдает при компиляции 2 ошибки.
Проверяю - та же конструкция, в том же месте, внимательное изучение Справочника MQ говорит, что все, вроде, должно работать.
Копирую изменения в новом индикаторе и переношу, дополняя, в предварительный вариант - ошибок нет!
Закралась мысль, что с мастером что то не так.
http://aumlura.narod.ru/master1.html
http://aumlura.narod.ru/master2.html
Благодарю за оказанное внимание.