Библиотеки: TradeTransactions - страница 5

 
fxsaber:

В исходниках библиотеки присутствует Convert.mqh, который быстро конвертирует массив одного типа в массив другого.

// Быстрый кастинг массивов.
#include <fxsaber\TradeTransactions\Convert.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{
  MqlTick Ticks[];

  MqlRates Rates[];  
  CopyRates(_Symbol, PERIOD_CURRENT, 0, 10, Rates); // Получили котировки.
  CONVERT::ArrayToArray(Rates, Ticks);              // Кастинг MqlRates[] -> MqlTick[].

  MqlRates Rates2[];    
  CONVERT::ArrayToArray(Ticks, Rates2);             // Кастинг MqlTick[] -> MqlRates[].
  ArrayPrint(Rates2);                               // Убедились, что все корректно.
}
 
fxsaber :

Можно обмениваться чем угодно через Ресурсы.


Вы заявляете о загрузке Container2, но не используете его. По логике должно быть:

  // Получим данные в исходном виде
  string Str2[];
  Container2[0].Get(Str2);                // Получили массив
  ArrayPrint(Str2);

  PRINT(Container2[1].Get<double>())      // Получили число
  PRINT(Container2[2].Get<MqlTick>().bid) // Получили структуру   
Конечно, в вашем примере результат тот же.

Что еще более важно, используя приведенный выше код в качестве скрипта с библиотеками скачать с

Я получил :

2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = string[2]
2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = double
2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = MqlTick
2019.03.26 18:11:51.656    R-277866Original (EURUSD,M1)    Stack overflow in '...\MQL5\Scripts\forum\R-277866Original.ex5'

?
 
Alain Verleyen:

Вы заявляете о загрузке Container2, но не используете его. По логике должно быть:

Да, в примере опечатка.


Конечно, в вашем примере результат тот же.

С Вашей правкой результат будет совпадать.


Что еще более важно, используя приведенный выше код в качестве скрипта с библиотеками скачать с

Я получил :

2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = string[2]
2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = double
2019.03.26 18:11:51.624    R-277866Original (EURUSD,M1)    Container[i].GetType() = MqlTick
2019.03.26 18:11:51.656    R-277866Original (EURUSD,M1)    Stack overflow in '...\MQL5\Scripts\forum\R-277866Original.ex5'

?

Без исходника ничего сказать не могу.

 
fxsaber :
...

Без исходника ничего сказать не могу.

Источником является именно ваш код. Build 2009.

Файлы:
 
Alain Verleyen:

Источником является именно ваш код. Build 2009.

Выполняется без ошибок.

 

Добрый день.

Просто объявляю

RESOURCEDATA<uchar> Res;

И такая ошибка

'Data' - struct undefined       Convert.mqh     75      49
in template 'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     60      14
'Data' - struct undefined       Convert.mqh     43      38
in template 'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' specified with [SOURCE=uchar,TARGET=uint]   Convert.mqh     29      14

Раньше небыло, думаю после обновления терминала появилось (билд 2085). Или я где-то туплю? )

 
Oleksii Chepurnyi:

Раньше небыло, думаю после обновления терминала появилось (билд 2085).

Локализовал этот баг компилятора

template <typename T>
struct A { T a; };

void f1()
{
  struct B { int Data; };
  A<B> Tmp;
}

void f2()
{
  struct B { int Data; };
  A<B> Tmp;
  
  Tmp.a.Data = 0; // 'Data' - struct undefined
}
 
думаю после обновления терминала появилось

Да, в 2037 такой ошибки нету.

 
Oleksii Chepurnyi:

Да, в 2037 такой ошибки нету.

Обошел баг, замените Include\fxsaber\TradeTransactions\Convert.mqh на приложенный.

Файлы:
Convert.mqh  4 kb
 
fxsaber:

Обошел баг, замените Include\fxsaber\TradeTransactions\Convert.mqh на приложенный.

Работает ) Спасибо!