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

 
Alexey Kozitsyn:

Ошибка определения типа параметров индикатора ENUM_DATATYPE.

Видно, что вместо типа TYPE_COLOR(#6) показывает тип TYPE_UINT, вместо типа TYPE_DATETIME (#9) показывает тип TYPE_LONG, вместо типа TYPE_FLOAT (#12) показывает тип TYPE_DOUBLE. Хотя типы TYPE_COLOR, TYPE_DATETIME и TYPE_FLOAT описаны в перечислении и должны иметь свои собственные значения!

Логика в результате видна, однако. Даже float->double объясним. Я бы еще сильнее урезал количество выводимых типов. В этом смысле ENUM_DATATYPE видится излишне широким. 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Идентификаторы типов данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Идентификаторы типов данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Идентификаторы типов данных - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:

Логика в результате видна, однако. Даже float->double объясним. Я бы еще сильнее урезал количество выводимых типов. В этом смысле ENUM_DATATYPE видится излишне широким. 

Не вижу логики, когда в документации явно описан энумератор ENUM_DATATYPE и каждый его член имеет свой номер. Также не вижу логики, если посмотреть на размер в байтах типа float и double.
 
Alexey Kozitsyn:
Не вижу логики, когда в документации явно описан энумератор ENUM_DATATYPE и каждый его член имеет свой номер. Также не вижу логики, если посмотреть на размер в байтах типа float и double.
Ну я бы оставил только целый (int) и "вещественный" (double) типы - из чисел.
 
fxsaber:
Ну я бы оставил только целый (int) и "вещественный" (double) типы - из чисел.
Самый простой пример: получили по Вашей логике тип переменной - int. Создали переменную этого типа. Хотите записать туда значение = 2. А по факту тип был bool. Как тогда быть?
 
Alexey Kozitsyn:
Самый простой пример: получили по Вашей логике тип переменной - int. Создали переменную этого типа. Хотите записать туда значение = 2. А по факту значение было bool. Как тогда быть?
void f( bool ) {}

void OnStart()
{
  f(2);
}
 
fxsaber:
void f( bool ) {}

void OnStart()
{
  f(2);
}
Отлично, только оперировать будете значением 1. Будет куча трудноуловимых ошибок.
 
Alexey Kozitsyn:
Отлично, только оперировать будете значением 1. Будет куча трудноуловимых ошибок.
Да не будет никаких ошибок. Их даже не придумать.
 
fxsaber:
Да не будет никаких ошибок. Их даже не придумать.
Если Вы чего-то не можете, это не значит, что этого не может быть.  Подождем ответ СД.
 
Alexey Kozitsyn:
Если Вы чего-то не можете, это не значит, что этого не может быть.  Подождем ответ СД.
У разработчиков свой взгляд. Просто в самом деле ошибочную ситуацию Вам придумать не получится в варианте int&double.
 
Ошибка деинициализации! Заявка #1677278!
Причина обращения: