Ошибки, баги, вопросы - страница 2521
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так это удобно, вроде. В контексте структур, конечно.
Да сомнительное удобство. Может оно и экономит символы в строке, но является источником случайных ошибок и затрудняет/искажает понимание кода. Как уже сказано выше, знак равенства имеет чёткий и однозначный смысл, что объект меняется целиком. Поэтому в данном случае оператор используется не по назначению. Если хочется такого нестандартного поведения, то следует перегрузить оператор для таких целей.
p.s. Допускаю лишь исключение, если класс B не имеет собственных полей, т.е. полностью совпадает с классом A (полностью эквивалентен ему), тогда нет причин препятствовать такому присвоению. Хотя в C++ оно всё-равно не работает, но в MQL можно разрешить.
В opt-файле в куске, где прописаны все входные параметры, значение для оптимизируемых параметров (определяется через поля size и offset) содержит не Value (как без оптимизации), а Start.
Логично, если там будет Value.
Ну вот видимо и разработчики MQL тоже не совсем понимают суть присваивания. Ибо я им талдычу об этой проблеме уже давно, но как об стену горох.
Суть присваивания в том, что объекту присваивается эквивалентный объект. Т.е. того же типа.
Суть операций для пользовательских типов заранее не определена. А определен лишь их порядок, который в данном случае заключается в вызове подходящего operator=
В MQL в отличие от С++ operator= наследуется, поэтому b = a; эквивалентно вызову А::operator=(const A&);
В общем случае здесь нет противоречий. В частном случае присваивания эквивалентного объекта есть некая нестыковка сущностей, но не более того
В MQL в отличие от С++ operator= наследуется, поэтому b = a; эквивалентно вызову b.operator=(const A&);
Ну да, в этом и проблема. Но разница в написании тут роли не играет. В С++ не скомпилируется в обоих случаях.
В общем случае здесь нет противоречий. В частном случае присваивания эквивалентного объекта есть некая нестыковка сущностей
Противоречие будет хотя бы с С++. Если такое компилируется, значит правый операнд неявно кастится к левому, и затем происходит полное замещение объекта. Как оно и должно работать по логике. Пример с int->long я приводил. А замещение части внутренностей объекта не есть присваивание. Поэтому тут всё в одном: и противоречие, и нестыковка.
p.s. Хотя ещё может быть перегружен оператор B::operator=(A&) , но я полагаю, здравомыслящий программист там тоже полностью заменит объект B, а не частично. Ибо в этом суть присваивания.
Если кому хочется лаконичного написания, то можно было бы сделать для этого какой-то другой оператор: &= или |= например . Они по крайней мере не являются общеупотребительными, поэтому не перепутаешь.
..........
Противоречие будет хотя бы с С++. ......
..........
С чего Вы взяли, что MQL должна полностью соответствовать С++ ???
С-подобный - вовсе не означает эквивалентный!
MQL разработан для вполне определённых задач и вовсе не обязан полностью копировать язык, на основе которого был создан.
Может уже хватит возмущаться?
А вот в Паскале можно .........
А в Ассемблере так .....
А на ява ....
А на Бэйсик ....
Вы что, в сравнение языков тут практикуетесь?
=======
П.С. Это я не только Вам...
С чего Вы взяли, что MQL должна полностью соответствовать С++ ???
...
Вы что, в сравнение языков тут практикуетесь?
Я отвечал на конкретную фразу. Успокойтесь. Выпейте валерьянки и ложитесь спать, вам вредно волноваться. ...Эк же у некоторых тут подгорает при слове "C++" )
Прошу помощи по WinAPI. Нужно уметь делать эти два действия в MT5.
Вызвать показанное меню и выбрать сохранение отчета.
Вызвать показанное меню и выбрать загрузку set-файла.
В MT4 с подобными вещами очень просто. В MT5 никак не выходит.
Т.е. нужно только вызвать меню и выбрать в нем соответсвующий пункт. Но не выходит.
ЗЫ Похоже, это нужно
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как программно нажать на кнопку Авто-торговля
Renat Fatkhullin, 2013.03.31 22:50
В 32 битной среде запустите или найдите 64 битный анализатор.Если записать Message log для вызова контекстного меню по задаче №2, то можно получить следующий результат:

Пробуйте програмно вызвать это меню через SendMessage WinApi.
Если записать Message log для вызова контекстного меню по задаче №2, то можно получить следующий результат:
Пробуйте програмно вызвать это меню через SendMessage WinApi.
Не получилось
Не получилось
Скорее всего не тот хендл используете.

Чарты реализованы в рамках объекта MDIClient, вам же нужно подняться к root окну terminal.exe, а затем спуститься по окнам к выделенному "SysListView32" и использовать его хендл.
Может можно как-то и проще, пробуйте...