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

fxsaber #:

Да. Либо сообщит, что индикатор "битый". Ведь не догадаться сейчас.

Строго говоря ошибку можно усмотреть в том, что Терминал не может отличить папку Test\ от файла test.ex5

//Experts\demo.mq5
iCustom(NULL, 0, "Test"); //Ошибка 4208, если существует папка Experts\Test\
                           //а путь индикатора Indicators\test.ex5

при этом непонятно, почему если существует папка Experts\Test\ то ошибка, а если Indicators\Test\ - то нормально

[Удален]

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

Может это фича такая, но мне не удобно.


Rashid Umarov #:

Спасибо, поправили. Теперь написано как в анонсе https://www.metatrader5.com/ru/releasenotes/terminal/2145, удалили лишнее

А это почему не исправили сразу ?

Ошибка при выполнении:

#define MACRO1
#define MACRO2
#define MACRO(X)    MACRO3(X)
#define MACRO3(X)   #X
void OnStart()
{
    Print(MACRO(MACRO1)==MACRO(MACRO2));
}

Результат: false

Ожидалось: true

A100 #:

Ошибка при выполнении:

Результат: false

Не увидел ошибки. Пустые макросы, как значения, - сами имена, видимо.

Особенности языка mql5, тонкости и приёмы работы - Спасибо за наводку.
Особенности языка mql5, тонкости и приёмы работы - Спасибо за наводку.
  • 2023.11.01
  • www.mql5.com
с указателем ситуация отлично решается Любителям быстрых алгоритмов. Более продвинутые программисты решат эту задачу через структуру. Но существует третье решение, которое более производительней предыдущего решения в несколько раз Главная сложность в этом алгоритме - это расчет времени начала месяца Пожалуйста
fxsaber #:

Не увидел ошибки. Пустые макросы, как значения, - сами имена, видимо.

Самый простой способ доказать эту ошибку (помимо того, что в С++ результат: true) - объединить доказательство с еще одной ошибкой:

Допустим Вы правы - тогда в следующем примере - StringLen("MACRO1") должно быть равно StringLen("MACRO2")

#define MACRO1 \
//---
#define MACRO2
#define MACRO(X)    MACRO3(X)
#define MACRO3(X)   #X
void OnStart()
{
    Print(StringLen(MACRO(MACRO1))
        ==StringLen(MACRO(MACRO2)));
}

и результат должен был бы быть: true

А он - false (!)

A100 #:

Допустим Вы правы - тогда в следующем примере - StringLen("MACRO1") должно быть равно StringLen("MACRO2")

Я пас.
fxsaber #:
Я пас.

Тогда на завтра отложим, а то тут еще обнаружились сопутствующие ошибки

Ошибка при выполнении:

namespace A {
template<typename T>
class B { public: B() {Print(1);} };
}
namespace A {
template<typename T>
class B { public: B() {Print(2);} };
}
void OnStart()
{
    A::B<int> a;
}

Сомнительный результат: 1

А почему не 2 ?

Извиняюсь за встревание... вопрос - как мт5 дружит с касперским? Не глючит терминал? Спасибо.