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

 

В кодобазу публикуются работы, а в терминале (Библиотека) их не видно. Самая поздняя у меня - за 13 сентября. Терминал (MT4 1010, MT5 1415) не перегружал.

В кодобазе стало появляться много одинаковых решений для обеих платформ. Можно ли сделать ссылку автоматическую, чтобы из MT4-варианта можно было перескочить в MT5-вариант и наоборот? 

И вот это из раздела

 Ну совсем же не понятно, кто к какой платформе относится. Добавьте в автоматических названиях тем отличительные признаки.

 
Как эту конструкцию заставить компилироваться?
template <typename T>
class CLASS
{
  static CLASS<T>* Pointer;
};

template <typename T>
CLASS<T>* CLASS<T>::Pointer = NULL;

void OnStart()
{
  CLASS<int> Class;
}
 

Что в Сервисдеске обозначает самый правый значок? 

 
fxsaber:
Как эту конструкцию заставить компилироваться?
template <typename T>
class CLASS
{
  static CLASS<T>* Pointer;
};

template <typename T>
CLASS<T>* CLASS::Pointer = NULL;

void OnStart()
{
  CLASS<int> Class;
}
У меня вот это компилится.
 
Stanislav Korotky:
У меня вот это компилится.
Спасибо!
 
Есть классическая конструкция для классов
template <typename T>
class CLASS
{
private:
  int Pos;

public:
  T Data[];
  
  CLASS( const int Size )
  {
    ::ArrayResize(this.Data, Size);
  }
  
  CLASS* operator []( const int iPos )
  {
    this.Pos = iPos;
    
    return(&this);
  }
  
  template <typename T1>  
  void operator =( const T1 Value )
  {
    this.Data[this.Pos] = Value;
  }
  
  template <typename T1>   
  void operator =( const T1 &Value )
  {
    this.Data[this.Pos] = Value;
  }  
};

void OnStart()
{
  CLASS<int> Array1(5);
  CLASS<MqlTick> Array2(5);

  Array1[2] = 1;

  MqlTick Tick = {0};
  Array2[2] = Tick;
}
Для структур что-либо подобное возможно?
 
fxsaber:
Есть классическая конструкция для классов
Для структур что-либо подобное возможно?
Стормозил - нельзя, конечно.
 
Вопрос. Размер пустого класса в MQL равен 16 байт (в 64-битной системе). За счёт чего? 8 байт, видимо, занимает указатель на виртуальную таблицу (согласно документации, в МКЛ она есть у всех классов). А остальные 8 чем заняты?
 
Коллеги, никто не столкнулся с такой проблемой? Сегодня утром терминал обновился до biuld 1430. И так совпало, что вчера переписал свой советник на работу с файлами через стандартную библиотеку (до этого была не совсем удачная реализация через стандартные файловые операции), но не протестировал - отложил на утро. И вот результат: советник при тестировании не находит файл - функция FileIsExist всё время возвращает false. Не понятно, где косяк - то ли у меня при переделке, то ли из-за обновления. Фишка в том, что документация гласит, что при тестировании файл должен располагаться в папке MQL5/Tester/Files. Однако, в реальности путь иной: ...\Roaming\MetaQuotes\Tester\...какая-то шестнадцатеричная хрень...\Agent-127.0.0.1-3000\MQL5\Files. Т.е, как минимум, в документации есть ошибка. Но главное, что при начале тестирования файл, помещённый туда вручную, из указанной папки стирается, хотя функция FileIsExist у меня прописана в OnInit и она является первой, которая обращается к файлам. Так возникает вопрос: где всё-таки должен располагаться файл при тестировании? И что вообще происходит?
 
BlackTomcat:
Коллеги, никто не столкнулся с такой проблемой? Сегодня утром терминал обновился до biuld 1430. И так совпало, что вчера переписал свой советник на работу с файлами через стандартную библиотеку (до этого была не совсем удачная реализация через стандартные файловые операции), но не протестировал - отложил на утро. И вот результат: советник при тестировании не находит файл - функция FileIsExist всё время возвращает false. Не понятно, где косяк - то ли у меня при переделке, то ли из-за обновления. Фишка в том, что документация гласит, что при тестировании файл должен располагаться в папке MQL5/Tester/Files. Однако, в реальности путь иной: ...\Roaming\MetaQuotes\Tester\...какая-то шестнадцатеричная хрень...\Agent-127.0.0.1-3000\MQL5\Files. Т.е, как минимум, в документации есть ошибка. Но главное, что при начале тестирования файл, помещённый туда вручную, из указанной папки стирается, хотя функция FileIsExist у меня прописана в OnInit и она является первой, которая обращается к файлам. Так возникает вопрос: где всё-таки должен располагаться файл при тестировании? И что вообще происходит?
В общем, проблему удалось обойти с помощью использования флага FILE_COMMON.
Файл при этом будет находиться в папке ...\Roaming\MetaQuotes\Terminal\Common\Files. При тестировании он оттуда не удаляется и нормально читается.