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

 
Aleksey Vyazmikin #:

В какое время получаете ошибку?

Кажется я понял. Если сигнал возникает на баре, который включает неторговые часы (с 23:55 до 0:15), возникает ошибка. И пофиг, что торговля идет только на первом тике. Придется как-то это обрабатывать. Спасибо за помощь.

 

А зачем такое сообщение в терминале? Терминал перестанет работать?

2023.08.31 08:26:26.846        please upgrade to Windows 10 Codename 21H1 (november 2021 update) or later


У меня Win10 2019 LTSC корпоративная.

 
W0wa0 #:

Кажется я понял. Если сигнал возникает на баре, который включает неторговые часы (с 23:55 до 0:15), возникает ошибка. И пофиг, что торговля идет только на первом тике. Придется как-то это обрабатывать. Спасибо за помощь.

Рад, что помог.

 
В одном случае компилятор выдает предупреждение, а в другом нет:
bool f( uint x )
{
    if     (x != -1); //(1)//Warning: sign mismatch
    else            ;
    return (x != -1); //(2)
}

А какая принципиальная разница между (1) и (2) ?

 
Это нормально, что такой код компилируется?
void OnStart()
{
  #ifdef // __MQL5__
  #else
  #endif
}
После #ifdef нет имени макроса.
 
fxsaber #:
Это нормально, что такой код компилируется? После #ifdef нет имени макроса.

Так тоже непорядок:

#ifdef 111
#else
#endif
 
В последнем build 3902 появилась какая то трудноуловимая ошибка при компиляции - если параметрический макрос расположен много раньше применения то выдается какая то несуществующая абсурдная ошибка, а если его продублировать непосредственно перед применением, то все нормально - не смог с ходу разобраться
 
A100 #:

Так тоже непорядок:

Да, нет проверки на наличие имени макроса и его корректность.

 
A100 #:
В последнем build 3902 появилась какая то трудноуловимая ошибка при компиляции - если параметрический макрос расположен много раньше применения то выдается какая то несуществующая абсурдная ошибка, а если его продублировать непосредственно перед применением, то все нормально - не смог с ходу разобраться

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

/*
. . . 
*/
#define MACRO555(X) int X;
#define MACRO666(X) int X;
/*
. . .
*/
MACRO555(i) //нормально
MACRO666(j) //Error: 'j' - unexpected token, probably type is missing?
            //       'X' - semicolon expected

Соответственно при дублировании макроса его порядковый номер смещался и проблема завуалировалась

 

Ну что я делаю не так?

#include <Canvas\Charts\LineChart.mqh>
void OnStart()
  {
   CLineChart chart;
   if(!chart.CreateBitmapLabel("Line Chart", 30, 30, 600, 450))
     {
      Print("Error creating line chart: ", GetLastError());
      return;
     }

   double arr[] = {1, 9, 1};
   double max = 0, min = DBL_MAX;
   for(int i = 0; i < ArraySize(arr); i++)
     {
      if(max < arr[i])
         max = arr[i];
      if(min > arr[i])
         min = arr[i];
     }

   chart.VScaleParams(max, min, 3);
   chart.ShowGrid(0);
   chart.ShowScaleBottom(true);
   chart.ShowScaleTop(true);
   chart.ShowScaleRight(true);
   chart.ShowScaleLeft(true);
   chart.SeriesAdd(arr);

   while(!IsStopped())
      Sleep(200);
   chart.Destroy();
  }

Получаю 

Почему линии начинаются не с 1 и выходят за пределы рисунка???

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