Ошибки, баги, вопросы - страница 2111

 
Vladimir Pastushak:

Все в пределах нормы...


что то подобное когда то было, когда индюк читал данные из файла в массив, но сейчас уже не вспомню...

 

Создал заявку ждем 

MQL5: ошибка
Необработана, Начата: 2018.01.24 16:17, #1940209

Версия и битность терминала

64 1755

Описание проблемы

Не выгружается индикатор, 

Устанавливаю индикатор, индикатор работает, удаляю индикатор, индикатор удаляется и в списке его нет, но он работает рисует обьекты так как будто его не удалили, в списке его нет.

При переоткрытии графика он всеравно работает, даже если график другого инструмента.

работает уже минут 10, циклов зацикленных нет все в приделах нормы, код приложил...
 

Ошибка при компиляции

#define \
    MACRO
кроме того ожидалось что перенос строки будет работать во ВСЕХ директивах
 
Vladimir Pastushak:

Создал заявку ждем 

MQL5: ошибка
Необработана, Начата: 2018.01.24 16:17, #1940209

Версия и битность терминала

64 1755

Описание проблемы

Не выгружается индикатор, 

Устанавливаю индикатор, индикатор работает, удаляю индикатор, индикатор удаляется и в списке его нет, но он работает рисует обьекты так как будто его не удалили, в списке его нет.

При переоткрытии графика он всеравно работает, даже если график другого инструмента.

работает уже минут 10, циклов зацикленных нет все в приделах нормы, код приложил...

Такая же проблема

 
Evgeny Belyaev:

Такая же проблема


Рекурсия?

 
Evgeny Belyaev:

Такая же проблема


IndicatorRelease();

 

Ошибка при компиляции

int  TerminalInfoInteger( 
   int  property_id      // идентификатор свойства 
   );

Необходимо компилировать прикрепленный файл

Где я взял такие "пробелы"? Здесь их много https://www.mql5.com/ru/docs/check/terminalinfointeger. Копировал фрагмент в Microsoft Edge при помощи мыши

Документация по MQL5: Проверка состояния / TerminalInfoInteger
Документация по MQL5: Проверка состояния / TerminalInfoInteger
  • www.mql5.com
Проверка состояния / TerminalInfoInteger - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
Error157.mq5  1 kb
 

Запутанная подсветка макросов - не зависит от контекста

//вариант A
#ifdef  MACRO //1
#endif
#define MACRO //2
#ifdef  MACRO //3
#endif
#undef  MACRO //4
#ifdef  MACRO //5
#endif

либо всегда присутствует (вариант B) либо всегда отсутствует (вариант A)

//вариант B
#ifdef  MACRO //1
#endif
#define MACRO //2
#ifdef  MACRO //3
#endif
//#undef  MACRO //4
#ifdef  MACRO //5
#endif
Ожидалось что если макрос в конкретной строке определен - то он подсвечивается, не определен - не подсвечивается. Иначе не понятно что означает наличие\отсутствие подсветки
 

Подсветка С\С++ файлов в MetaEditor

https://www.mql5.com/ru/docs/basis/preprosessor/constant

Макрос __MQL5__  доступен при компиляции файла *.mq5, при компиляции *.mq4 доступен макрос __MQL4__.

Ожидалось что указанные макросы (а также __MQL__) не будут доступны при подсветке файлов с расширениями .c, cpp, .h

//Test.h
#ifndef __MQL__
#define MACRO
#endif
//Test.mq5
#include "Test.h"
#ifdef MACRO //не подсвечивается... нормально
#endif
//Test.cpp
#include "Test.h"
#ifdef MACRO //не подсвечивается... но этот .cpp файл не предназначен для компиляции в MetaEditor,
             //а компилируется в С\С++, где макрос __MQL__ не является предопределенным
             //в результате подсвечивается то что не должно и наоборот не подсвечивается что должно
#endif

Это случай (как и предыдущий) когда неправильная подсветка, вводящая в заблуждение, много хуже, чем ее отсутствие

Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
  • www.mql5.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
 

Неоднократно встречал на форуме обсуждение пользователей об отсутствие в MetaEditor предопределенного макроса, аналогичного _WIN64. Ответ администрации был, что нет необходимости, поскольку MetaEditor генерирует универсальный одновременно 32-64-х разрядный код.

В то же время многие используют выравнивание https://www.mql5.com/ru/forum/225498/page2#comment_6401835 путем дополнения полей структуры

И действительно, если использовать готовую .dll (которую уже нельзя изменить) то без дополнительного выравнивания не обойтись. Но в x86 и x64 это дополнение может выглядеть по разному, а значит необходимость в аналоге _WIN64 все-таки есть, поскольку структура задается на этапе компиляции .mq5 файла где TerminalInfoInteger( TERMINAL_X64 ) не работает

//Test.mq5
#ifdef _WIN64
#define ALIGN (8-2) //добавить к элементу структуры 6 байт
#else
#define ALING (4-2) //добавить к элементу структуры 2 байта
#endif

Сейчас нужно лишнюю информацию держать в уме. В результате экономии на пустяке есть риск получить трудноуловимую ошибку

Передача структуры в dll C++
Передача структуры в dll C++
  • 2018.01.26
  • www.mql5.com
Пишу dll, которая будет выполнять логику, и собственно возник вопрос. Можно ли передавать в dll структуру данных? Т.е...
Причина обращения: