Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Столкнулся с проблемой переполнения стека вызова (так я думаю).
После вызова метода одного из объектов , см. пример ниже. Код упрощенный, только суть. Класс CClass1 - базовый, и в списке list1 разные объекты потомки этого класса, и init функции у них имеют разную реализацию. Так вот в одном классе где init функция перебирает подобный список (проще говоря, инициализация вложенного интерфейса, панели в панели) после возврата из init в строке
возникает ошибка
2010.12.02 00:21:00 test1 (EURUSD,H1) Invalid pointer access in 'Container.mqh' (74,10)
Т.е. указатель t - мертвый.
При отладке такая ошибка отсутствует, после вызова метода указатель "живой", вложенные интерфейсы создаются и эксперт работает дальше.
Обойти ошибку удалось только так:
указанием #property stacksize ничего не добился.Трудно что-либо сказать определенно. Нужны исходники.
Попробуйте написать заявку в сервисдеск.
Приехал из отпуска, запустил терминалы, обновился до 360 билда и перестал работать один индикатор...
читаю в изменениях: 6. MQL5: Исправлена обработка события клика на чарте.
Теперь при щелчке на графическом объекте генерируются сразу же два события: CHARTEVENT_OBJECT_CLICK + CHARTEVENT_CLICK, а раньше было только одно CHARTEVENT_OBJECT_CLICK, что позволяло моделировать двойной щелчок мышки
Теперь так всегда будет или это баг?
Приехал из отпуска, запустил терминалы, обновился до 360 билда и перестал работать один индикатор...
читаю в изменениях: 6. MQL5: Исправлена обработка события клика на чарте.
Теперь при щелчке на графическом объекте генерируются сразу же два события: CHARTEVENT_OBJECT_CLICK + CHARTEVENT_CLICK, а раньше было только одно CHARTEVENT_OBJECT_CLICK, что позволяло моделировать двойной щелчок мышки
Теперь так всегда будет или это баг?
В очередной раз долбанулся об стену невозможности,
требуется передать параметр в конструктор, чтоб класс инициализировался с определёнными параметрами,
как обойти проблему? что посоветуете?
В очередной раз долбанулся об стену невозможности,
требуется передать параметр в конструктор, чтоб класс инициализировался с определёнными параметрами,
как обойти проблему? что посоветуете?
к
так, другого выхода не вижу
ну и конечно же нужно в правильном порядке расставить Init-ы в случае наследуемых классов
а вообще бы хотелось, что бы написали статью об обработке ошибок в сложных проектах, Print и return как здесь - это не выход.
так, другого выхода не вижу
ну и конечно же нужно в правильном порядке расставить Init-ы в случае наследуемых классов
а вообще бы хотелось, что бы написали статью об обработке ошибок в сложных проектах, Print и return как здесь - это не выход.
Тоесть создавать доконструктор который бы завершил процесс конструирования, и который в свою очередь выставляет флаг инициализации.
В общем зачёт, но есть неудобства. Прийдётся опрашивать в каждой функции флаг инициализации, а при большом количестве функций класса это не удобно.
Вдруг прийдётся чтото менять этож все функции нужно будет переписывать.
ЗЫ Я тут подредактнул код, исплавил описку.
Тоесть создавать доконструктор который бы завершил процесс конструирования, и который в свою очередь выставляет флаг инициализации.
В общем зачёт, но есть неудобства. Прийдётся опрашивать в каждой функции флаг инициализации, а при большом количестве функций класса это не удобно.
Вдруг прийдётся чтото менять этож все функции нужно будет переписывать.
ЗЫ Я тут подредактнул код, исплавил описку.
дак если бы был конструктор, это же не значит, что инициализация прошла успешно. по любому нужно преверять факт инициализации
можно конечно проверку однократно выполнять:
но если пользуешься своим кодом, можно взять за правило проверять факт инициализации во времы вызова, а если он будет другими использоваться, не напишешь же в инструкции: "обязательно использовать только такую конструкцию, иначе за последствия не ручаюсь.". Не, полюбому нужно выполнять проверки на инициализацию в методах класса.
Разработчикам.
Сразу после рестарта нового билда
PS
Обновление терминала установленного в другую папку прошло успешно, символы в списке есть (правда там не было открытых графиков до обновления)...
Скажите это баг или так делать нельзя. написал следующее
Выдает ошибку
Скажите это баг или так делать нельзя. написал следующее
Выдает ошибку
Скорей всего тут речь о том, что ArrayInitialize() предназначена для заполнения только массивов с определенным типом, если быть точным числовых (скорей всего int или double).
Поскольку массив имеет тип ENUM_ORDER_TYPE вызов ArrayInitialize выдает ошибку, сообщая о том что такой метод вызова недопустим.
На мой взгляд в этом случае существует два варианта:
1. Изменить тип массива ENUM_ORDER_TYPE на int, при этом учесть это в коде (по крайней мере типы ордеров без труда могут быть представлены в виде int);
2. Самостоятельно реализовать "инициализацию" массива.