Ошибки, баги, вопросы - страница 2471
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Переназначая указатель на новый объект, теряем предыдущий объект, на который указывал переназначенный указатель .
нет, указатель это указатель, в MQL он дескриптор, не суть - но новую копию обьекта создавать не корректно это, вот так сейчас работает корректно:
но если следовать твоей логике, то и в этом коде будет создана копия обьекта l в ф-ции SetLabel() - я же указатель передал, а не ссылку?
new надо убирать. Объекты же есть уже, и указатели на них.
вопрос не как решить проблему, а почему при глобальной области видимости переменной CChartObjectLabel *LabelUP,*LabelDN; - потерялся указатель!
нет, указатель это указатель, в MQL он дескриптор, не суть - но новую копию обьекта создавать не корректно это, вот так сейчас работает корректно:
но если следовать твоей логике, то и в этом коде будет создана копия обьекта l в ф-ции SetLabel() - я же указатель передал, а не ссылку?
Нет. Здесь l - параметр метода, через который передаем нужный указатель. Здесь всё хорошо. Здесь указатель остаётся на ранее созданный объект. Тут же нет создания нового объекта и переназначение указателя на него с потерей прошлого объекта.
все равно не корректно все работает
вот эти "указатели" в MQL заточены под работу в области видимости класса, я не хочу создавать класс, беру и объявляю в глобальной видимости указатель, затем передаю его в любую ф-цию и то что в этой ф-ции я создаю дескриптор обьекта не есть повод уничтожать обьект при выходе из локальной видимости ф-ции
сейчас немного занят, но нужно тестовые примеры без графики сделать - думаю такая же беда будет, что если вошел в ф-цию с указателем со значением POINTER_INVALID, то и выйдешь с таким же POINTER_INVALID , по ссылке да, все будет работать корректно, но вроде по ссылке нельзя передать указатель с POINTER_INVALID - будет ошибка обращения к указателю
все равно не корректно все работает
вот эти "указатели" в MQL заточены под работу в области видимости класса, я не хочу создавать класс, буру и объявляю в глобальной видимости указатель, затем передаю его в любую ф-цию и то что в этой ф-ции я создаю дескриптор обьекта не есть повод уничтожать обьект при выходе из локальной видимости ф-ции
сейчас немного занят, но нужно тестовые примеры без графики сделать - думаю такая же беда будет, что если вошел в ф-цию с указателем со значением POINTER_INVALID, то и выйдешь с таким же POINTER_INVALID , по ссылке да, все будет работать корректно, но вроде по ссылке нельзя передать указатель с POINTER_INVALID - будет ошибка обращения к указателю
С удивлением обнаружил возможность объявления typedef с указателем на шаблонную функцию.
Однако счастье не оказалось долгим.
typedef с указателем на шаблонную функцию является ли запланированным к использованию функционалом?
При работе с typedef использование шаблонной функции с явной специализацией не вызывает генерацию кода этой шаблонной
Создаю кастомный символ и заполняю его дневными барами за 25 лет, это должно весить примерно 400 кб. Однако в папке символа создаются .hcc файлы суммарным размером 15 мб! И вдобавок всё это занимает около 20 секунд! Ни в какие ворота не лезет... Как это можно объяснить?
С удивлением обнаружил возможность объявления typedef с указателем на шаблонную функцию.
Однако счастье не оказалось долгим.
За последнее время предоставлено информацию о десятке "особенностей" работы и багов в МТ.
Как узнать стоит ждать их исправление или нет?
Прошу не предлагать тестить все каждый раз при выходе нового билда.
# (не исправлено в MT5(build 2057)) "Тестер стратегий: запланировано 2 прохода, но на практике бесконечное число проходов > 900шт из-за ошибки "OnInit critical error"".
# (не исправлено в MT5(build 2057)) "Некорректное значение поля размер массива в рамках работы дефолтного оператора присваивания для структур с динамическими массивами".
# (не исправлено в MT5(build 2057)) "Компилятор не видит дефолтный конструктор копирования для класса при возвращении объекта класса по значению из функции".
# и # (не исправлено в MT5(build 2057)) "Ошибка компиляции при выполнении type cast "самого в себя" для шаблонных классов и "сложных" структур".
# (не исправлено в MT5(build 2057)) "При работе с typedef использование шаблонной функции с явной специализацией не вызывает генерацию кода этой шаблонной функции".
# (не исправлено в MT5(build 2057)) "Ошибка компиляции при повторном использовании одной и той же сигнатуры функции в рамках typedef".
# (не исправлено в MT5(build 2057)) "Значительная часть функций для работы со строками не работает с NULL символами в строке (например: ShortArrayToString, StringInit, StringFill)".
# (не исправлено в MT5(build 2057)) "Функция StringSetLength работает только в сторону "обрезания" длины строки, но не увеличения".
# (исправлено в MT5(build 2057)) "Тестер стратегий: запуск 750 процессов "metatester64.exe"".
# "Форум www.mql5.com, при правке сообщения с картинкой, предыдущая картинка не заменяется на новую".
Предложения:
# "Предоставить пользователю возможность принудительной генерации/удаления кода для оператора присвоения (конструктор копирования) по умолчанию".
# "Разрешить функции ArrayCopy копировать классы и "сложные" структуры, аналогично тому как структуры предоставляют функционал deep copy для любого типа объекта".
# "Предоставить пользователю функционал для чтения/установки значения Capacity при работе с динамическими массивами"
# "Изменения по улучшению инфографики сервиса "Сигналы""
О чем я и говорил
Шаблонный typedef и использование typedef в шаблонном классе - это разные вещи.
Второй вариант рабочий, но возникает проблема с перекрытием пространства имен при повторном использовании шаблонного класса с другим типом.