Про билд 2980 Войдите в моё положение... - страница 2

 
Fast235:

смена пола - прямо на глазах)

Спалился от раздражения)

 
Renat Akhtyamov:
вернитесь на предыдущий билд

Как вернуться? Где предыдущий билд?

 
ElenaFxPro4:

Ошибка у меня действительно ={0}. Но тоже пришлось править около 123 мест... 

Прочитайте Define, функции, макро. Будущее легче.

 
Fast235:

смена пола - прямо на глазах)

Так оно мальчег. Вы не знали раньше? )))
Man:

...

Компилятор выдаёт предупреждение на то что не указано явно


И правильно делает, что выдает
 
Удар током от клавы - это всегда полезно, для осознания бренности бытия ...

А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst).
Так однозначно указано, цитирую:  " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "

 Немного модифицируем пример из этого описания:


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

Желающие могут проверить это самостоятельно - пример прикрепляю.



int OnInit()
  {


//---
   return(INIT_SUCCEEDED);
  }

//+-------------------- END -----------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{
   int i;
   
   static double AA[5];
   static double BB[5];
   
   i=1;
   
   if( AA[i] ) 
      Print("AA[i] = ",AA[i]," и имеет значение true");
   else 
      Print("AA[i] = ",AA[i]," и имеет значение false");
 
   if( AA[i] || BB[i] ) 
      Print("AA[i] = ",AA[i]," и имеет значение true");
   else 
      Print("AA[i] = ",AA[i]," и имеет значение false");
      
      
   return(rates_total);
  }
//---------------------------------------------------------------------------------------


Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.

Но как-то "За державу обидно" :)

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Тип bool - Целые типы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ну так он же и не выдает ошибку. Выдает замечание, обращает Ваше внимание на то, что может быть Вы что то забыли. Не учли, пропустили и т.д. А то, что где - то он это делает, а где - то нет... Ну может пропустили. Потом доработают.
 
MetaQuotes:

Из последнего - часто ошибочные инициализации структур как ={0}.

Инициализация {} на которую предлагают заменить еще хуже, разве нет?

 
Man:
Удар током от клавы - это всегда полезно, для осознания бренности бытия ...

А по поводу того, правильно или не правильно ругается компилятор - смотрим документацию по bool-овскому типу данных (https://www.mql5.com/ru/docs/basis/types/integer/boolconst).
Так однозначно указано, цитирую:  " Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или вещественные типы или выражения этих типов, компилятор не выдаст ошибки. В таком случае значение ноль будет интерпретировано как false, а все остальные значения как true. "

 Немного модифицируем пример из этого описания:


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

Желающие могут проверить это самостоятельно - пример прикрепляю.


Мне, как бы не сложно исправить свой код в 2000 местах, в сущности, это просто работа, которая хорошо оплачивается рынком.

Но как-то "За державу обидно" :)

Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании.
PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......

 
Oleg Peiko:

Так ошибки и нет , это предупреждение. С предупреждениями компилируется без проблем. А предупреждения эти от того что возможно корректность работы будет нарушена при неявном преобразовании.
PS конечно сложно не понять что только 0 это false , но мало ли какое чудо вдруг компилятору в голову стрельнет.......

Вы настолько в этом уверены ?? :-) 

 
Man:

вставить сравнение с нулем было в разы быстрее (и правильнее изначально) чем писать этот ваш пост

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