Ошибки, баги, вопросы - страница 2656
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В справке про EventChartCustom () сказано:
sparam
[in] Параметр события типа string, передаваемый функции OnChartEvent. Если строка имеет длину больше, чем 63 символа, то строка усекается.
Однако успешно передается строка длиной 96 символов, что то изменилось?
128 байтов. Это 127 uchar-символов, или 63 ushort-символов.
Как в MQL реализовать такую вещь:
?128 байтов. Это 127 uchar-символов, или 63 ushort-символов.
Это на самом деле 160 байтов.
Как в MQL реализовать такую вещь:
?Collection(CObject &refs[]) { size = ArraySize(refs); }Уважаемые разработчики, можно ли поменять как то UTM метки ?
Или Можете ли Вы привести метки в порядок ?
utm_campaign=mt4terminal
utm_source=properties.indicator
utm_medium=indicatorName
utm_term=indicatorVersion
utm_content=Year
Сейчас текущие UTM метки не информативны...
Унаследовать CButtons от CWnd
В том то и дело что дерево классов имеет общий узел CWnd (CObject дальше, вообще в корне).
CButton -> CWndObj -> CWnd -> CObject.
Если изменить параметр в методе на CObject, получаем в 2 раза больше ошибок:
Аналогичная иерархия классов работает для случая не массива. Вот компилируемый код:
Вопрос, как сделать, чтобы и для массива работало?
Я знаю шаблон помогает, но его как раз хочется избежать.
ИМХО, должно без шаблонов работать по праву наследования.
Проверил как в C++.
Работает. Но MQL такое не переваривает, что с индексом, что без.
В том то и дело что дерево классов имеет общий узел CWnd (CObject дальше, вообще в корне).
CButton -> CWndObj -> CWnd -> CObject.
Если изменить параметр в методе на CObject, получаем в 2 раза больше ошибок:
Аналогичная иерархия классов работает для случая не массива. Вот компилируемый код:
Вопрос, как сделать, чтобы и для массива работало?
Я знаю шаблон помогает, но его как раз хочется избежать.
ИМХО, должно без шаблонов работать по праву наследования.
Проверил как в C++.
Работает. Но MQL такое не переваривает, что с индексом, что без.
Для C++ вот так наглядней Ваш пример будет. Запустите и посмотрите, что получится)))
Мда, мой косяк. Но тогда возникает следующий вопрос. Вот этот код C++ работает (уже точно как надо ;-)).
Аналогичный MQL дает ошибку:
Мда, мой косяк. Но тогда возникает следующий вопрос. Вот этот код C++ работает (уже точно как надо ;-)).
Аналогичный MQL дает ошибку:
не знаю задачу, но по моему Вы ищете что то такое:
в MQL это указатель на функцию void func(void)
в классе можно объявить поле с типом PTR и затем присвоить ему функцию и затем "разыменовывать указатель" и вызвать функцию
с передачей функций написанных в процедурном стиле в класс работает без проблем, методы класса, скорее всего, так просто не получится передавать, можно через dynamic_cast попробовать, но код очень запутанный получится
не знаю задачу, но по моему Вы ищете что то такое:
в MQL это указатель на функцию void func(void)
в классе можно объявить поле с типом PTR и затем присвоить ему функцию и затем "разыменовывать указатель" и вызвать функцию
с передачей функций написанных в процедурном стиле в класс работает без проблем, методы класса, скорее всего, так просто не получится передавать, можно через dynamic_cast попробовать, но код очень запутанный получится
typedef не прокатит с методом.
dynamic_cast работает в сторону наследника (более длинной цепочки), то есть если в указателе на base содержится derived, то можно привести к derived и, если он не NULL (т.е. каст нормальный), вызвать его метод. Но когда ситуация наоборот, как в моем случае, есть указатель на derived то он по определению является и base. И любой вызов его виртуального метода просекает, что в указателе "сидит" derived и вызывает переопределенную реализацию. А нужно базовую.
Для этого есть вышеуказанная синтаксическая конструкция в C++, но MQL - не C++. По-видимому, пока никак.
Я сделал у себя обходной трюк, но он не во всех задачах может прокатить.
Смысл всех этих плясок с бубном, как всегда, чтобы запутанный код остался внутри "библиотеки", а использующий её код стал кристально чистым и простым.