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

 
С какого по какой билд принимаются EX5 в Маркет?
 
Комбинатор:

Вообще конечно весело. Каст структур был самими разрабами назван штатной альтернативой union, теперь кастовать нельзя а объединений еще нет, так получается?

Так кастовать и с появлением union полноценно нельзя будет. Только простые случаи можно будет.
 
fxsaber:

Как теперь Copy-функцию написать?

Как совсем извращение использовать файлы, зато нативно
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
Как совсем извращение использовать файлы, зато нативно
Да, это ДНО.
 

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

Ошибки, баги, вопросы

fxsaber, 2017.04.10 16:23

Создание лишних template-перегрузок, которые приводят к ошибкам компиляции
template <typename T>
T Func()
{
  T Res;
  
  return(Res);
}

template <typename T>
void Func( T& Value )
{
  T Res = (MqlTick)Value;
}

void OnStart()
{
  Func<string>(); // без этой строки компилируется
  
  MqlTick Tick;
  
  Func(Tick);
}

Компилятор зачем-то пытается создать

void Func( string& );
Почему этот код не компилируется в 1589? Здесь нет никакого кастинга.
 
Комбинатор:

Если длл некритично, то memcpy. Или ждать union

Вообще конечно весело. Каст структур был самими разрабами назван штатной альтернативой union, теперь кастовать нельзя а объединений еще нет, так получается?

именно так.

 
Slava:
И не должно быть возможно


1. когда планируется ввод union?

2. с вводом union будут введены так же typedef?

3. планируется ли ввод указателей на фундаментальные типы?
 
Konstantin:


1. когда планируется ввод union?

2. с вводом union будут введены так же typedef?

3. планируется ли ввод указателей на фундаментальные типы?

1. Скоро. В компиляторе уже всё готово, тестируем. После тестов выпустим.

2. Пока неизвестно, когда

3. Не планируется.

 

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

Господа, это нормально? Так было всегда? Или баг?

Для примера:

static datetime TimeBuf[]; 

if (ArraySize(TimeBuf) == 0) ArrayResize(TimeBuf, 10);

CopyTime(_Symbol, _Period, 0, 1, TimeBuf);

Функция CopyTime изменяет размер массива TimeBuf в 1.

Это неправильно в принципе.

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

 
Marat Sultanov:

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

Господа, это нормально? Так было всегда? Или баг?

Для примера:

Функция CopyTime изменяет размер массива TimeBuf в 1.

Это неправильно в принципе.

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

Ваш массив - динамический! То есть, с изменяемым размером. Так как Вы не указали его размерность в квадратных скобках.

Слово static означает, что объект этого массива конструируется при загрузке эксперта и уничтожается при выгрузке