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

 
fxsaber:

Пишу код, используя форум (поиск) и кодобазу, как справочник или источник копи-пасты.

А ведь есть люди, кто использует и другие сервисы ресурса.


у меня тоже самое, но....

сайт не доступен - значит обновляется.... можно выпить кружку кофе и сьесть пару кексиков. 



 
Не работает BreakPoint
datetime F()
{
  MqlTick Tick = {0}; // Сюда ставим BreakPoint
  
  return(Tick.time);
}

void OnStart()
{  
  Print(F());
}
 
Не работает показ значений полей структуры при дебаге
struct MQLTICK : public MqlTick {};

void OnStart()
{  
  MQLTICK Tick1 = {0};
  MqlTick Tick2 = {0};
  
  DebugBreak();
}


 
Vladislav Andruschenko:


ну глюки, ну невозможно зайти, ну ..... 

а что такое срочное, что аж бесит, когда доступа нет? 

сайт не доступен - значит обновляется.... можно выпить кружку кофе и сьесть пару кексиков. 

от такого количества кофе и кексиков - пузо начинает расти

 

Как вытащить PLOT_LABEL-свойство индикаторного буфера?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
При создании пользовательского индикатора можно указать один из 18 типов графического построения (способа отображения на главном окне графика или в подокне графика), значения которых указаны в перечислении ENUM_DRAW_TYPE. В зависимости от стиля рисования, может потребоваться от одного до четырех буферов значений (отмеченных как...
 

Баг с инициализацией статических переменных.  В старых билдах его не было.

class A
{
 public:
  static int f()
  { 
    static int a=1;
    Print(a);       // Получаем a=0 !!
    return a;  
  }   
};


int a= A::f();


void OnStart()
  {
   
  }

Кому не трудно, отравьте это в сервис-деск.  У меня больше нет желания общаться с ними там.

 
Alexey Navoykov:

Баг с инициализацией статических переменных.  В старых билдах его не было.

Кому не трудно, отравьте это в сервис-деск.  У меня больше нет желания общаться с ними там.

Это не баг, отсюда обсуждалось. Выжимка

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql4, тонкости и приёмы работы

Alexey Viktorov, 2017.04.30 08:54

последовательность инициализации: (для тех кто не знает об этом)

Сначала переменные глобального уровня потом статические расположенные в зависимости от первоочерёдности функций, OnInit(), OnTick() или OnCalculate()... дальше мне было не интересно, а локальные в своё время. Так вот в этом коде получается, что функция вызывается до окончания инициализации статических переменных, отсюда и ошибка о которой идёт речь. Функция вызвана раньше чем инициализирована переменная

 
fxsaber:

Это не баг, отсюда обсуждалось. Выжимка

Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? )  Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка.  Остаётесь только вы )  Обсудили сами с собой, значит это не баг )

Это баг.  Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё.  Это нонсенс.  И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте.  Третьего не дано.  Иначе это не язык программирования, а чёрти что.

 

Ещё один баг в новых билдах:

template<typename T>
int F1(const T& array[])
{
  return ArrayMaximum(array);
}


template<typename T>
int F2(const T& array[]) { return F1(array); }


void OnStart()
  {
    int arr[4]= { 1, 2, 3 };
    Print(F2(arr));  // Выдаёт -1 !!!
  }


Эх, как же тут всё сыро.  Думал, обновлюсь таки на новые билды, а то на старых уже Маркет не принимает продукты.   А тут баг на баге!

 
Alexey Navoykov:

Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? )  Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка.  Остаётесь только вы )  Обсудили сами с собой, значит это не баг )

Это баг.  Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё.  Это нонсенс.  И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте.  Третьего не дано.  Иначе это не язык программирования, а чёрти что.

Вычеркнуть можешь, я никогда пальцы не растопыривал "какой я программист"...

А документацию прочесть мама не велит??? Специально для таких я вставил цитату из документации

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql4, тонкости и приёмы работы

Alexey Viktorov, 2017.04.29 12:50

А ничего что в справке написано что статическая переменная ... читайте сами

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


Но никак не функцией.

Вот так работает

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully