Новый синтаксис MQL4

 

Прошло некоторое время с момента выхода бета-версии, и я заметил где-то заметку, что регулярный релиз может появиться в середине января. Хотя я сомневаюсь, что это произойдет, возможно, несколько кодеров почувствуют интерес поделиться идеями и проблемами, которые они узнали в бета-версии.

Есть ли уже смысл начинать обсуждение нового синтаксиса исходников MQL4, редактора, компилятора, паттернов, ООП или чего-то еще, связанного с этим?

Пожалуйста, никаких сообщений об ошибках, никаких криков, только конструктивное обсуждение в этой теме.

 

Я обнаружил, что директива #include игнорируется, если повторяется, т.е.

int OnStart() {
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
}

работает так же, как

int OnStart() {
#include <dummy.mqh>
}

Хотя это очень удобное поведение, если у вас есть объявления классов в отдельных файлах, оно не упоминается в файле помощи.

 

Новая версия кажется немного быстрее.

Динамические массивы set-as-series, похоже, автоматически сдвигаются.

Перегрузкафункций обеспечивает лучшее взаимодействие, чем переключатели.

 
Я был бы признателен за подсказку, как найти причину "утечки памяти". Есть ли какая-нибудь хорошая практика?
 
Ovo: Я был бы признателен за подсказку, как найти причину "утечки памяти". Есть ли какая-нибудь хорошая практика?
Вы задаете общий вопрос по программированию, например, убедитесь, что "удаляете динамически выделенную память" || "ограничиваете использование рекурсивных функций". Или вы имеете в виду ошибку утечки памяти в бета-версии?
 
ubzen:
Вы задаете общий вопрос по программированию, например, убедитесь, что "удаляете динамически выделенную память" || "ограничиваете использование рекурсивных функций". Или вы имеете в виду ошибку утечки памяти в бета-версии?


Определенно первое. У меня нет опыта заботы о неиспользуемых объектных ссылках, так как мой опыт связан с JAVA. Поэтому я имею в виду, что буду признателен за подсказку для поиска утечки объектов после получения общего предупреждения (если такая подсказка существует). В данный момент я пытаюсь определить класс утекающего объекта по количеству байт, которые выводит предупреждение.

 
Ovo: Определенно первое. У меня нет опыта заботы о неиспользуемых ссылках на объекты, так как я работаю в JAVA. Поэтому я хочу сказать, что буду признателен за подсказку для поиска утекающих объектов после получения общего предупреждения (если такая подсказка существует). В данный момент я пытаюсь определить класс утекающего объекта по количеству байт, которые выводит предупреждение.

Он неполный по сравнению с mt5. Должна быть еще одна строка с названием класса. Надеюсь, они скоро добавят это.

 

Что ж, поиск утечек оказался действительно раздражающим... больше, чем я ожидал.

Я потратил некоторые усилия на создание инструмента, но у меня ничего не получилось. Хотя я обнаружил, что могу переопределить операторы new/delete, я понял, что мне нечем их заменить. Если бы это были функции с круглыми скобками, то все было бы довольно просто, но, к сожалению, это утверждения. Я мог бы создать обертку вокруг операторов new/delete для их регистрации, но это было бы очень болезненное решение, у которого нет будущего.

Если у кого-то есть опыт, как обнаружить источник утечки, пожалуйста, напишите.

 
Ovo:<br / translate="no">

Что ж, поиск утечек оказался действительно раздражающим... больше, чем я ожидал.

Я потратил некоторые усилия на создание инструмента, но у меня ничего не получилось. Хотя я обнаружил, что могу переопределить операторы new/delete, я понял, что мне нечем их заменить. Если бы это были функции с круглыми скобками, то все было бы довольно просто, но, к сожалению, это утверждения. Я мог бы создать обертку вокруг операторов new/delete для их регистрации, но это было бы очень болезненное решение, у которого нет будущего.

Если у кого-то есть опыт, как обнаружить источник утечки, пожалуйста, напишите.

Возможно, эти статьи (для mql5, но то же самое относится и к новому mql4) помогут вам найти решение:

Порядок создания и уничтожения объектов в MQL5

Использование объектных указателей в MQL5
 
angevoyageur:

Возможно, эти статьи (для mql5, но то же самое относится и к новому mql4) помогут вам найти решение:

Порядок создания и уничтожения объектов в MQL5

Использование объектных указателей в MQL5



Спасибо за вашу заметку.

К сожалению, это не поможет в лечении утечек, а только объяснит, почему они происходят.

Единственное решение, которое я использовал до сих пор, - это написание модульного теста для каждой части кода, которую я создаю, и частое выполнение модульных тестов во время разработки. Таким образом, если утечка появляется, я могу попытаться изолировать тест-кейс, который ее вызвал. Однако некоторые тесты довольно сложны, так что это непростое решение. А редактор - это настоящая боль.

 

Как отличить новый синтаксис?

Мне кажется, что для обозначения "нового" синтаксиса и "оригинального" синтаксиса нужно другое слово. Похоже, что MQ не заботится об официальных названиях и продолжает делать вид, что они совместимы.

Так что, похоже, нам придется самим искать подходящие названия. Какие есть предложения? MQL4 V2, OMQL4 (т.е. Object-), MQL4.1 ...?

Причина обращения: