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

Stanislav Korotky:

Можно как-то блокировать прокрутку графика, когда кнопка мыши нажимается в пределах открытого CAppDialog?

Сейчас, например, если нажать на кнопку CButton внутри диалога и не отпуская кнопку мыши подвинуть её курсор (часто это происходит даже непроизвольно, на несколько пикселей), начинает скроллиться чарт.

В библиотеке есть только одна подсказка на этот счет - заголовок CAppDialog, который по нажатию мыши создает дарг-объект и переходит в режим его перетаскивания, при котором сам чарт остается на месте. Если воспользоваться этой технологией, то пропадает возможность нажимать на CButton (или любой другой контрол).

Может кто-то уже решил эту проблему?

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

тут все примеры https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples

CHART_MOUSE_SCROLL  и CHART_FOREGROUND можно попробовать изменить, может в них дело

Как убрать статус продавец с показом своего фио?  P.s. я не продавец
Баги МТ5 (build 2361)
Основная претензия к неуместному выводу warning - "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version".
Текущая реализация - это стрельба с  пушки по воробьям.
Не важно уместен или нет - warning "лезет" фактически при любом вызове перегруженной шаблонной функции в базовом классе, что в определенных ситуациях достаточно сильно мешает разработке:

class FakeArgument_A1{
} fake_argument_a1;

class FakeArgument_B1 : public FakeArgument_A1{
} fake_argument_b1;


struct Iterator{
   char data;
};

class Allocator_traits{
public:
   template<typename InputIterator>
   void construct_range(const InputIterator &it, int n, const FakeArgument_A1* = NULL){
      printf("1");
   }
   
   template<typename InputIterator, typename _Tp>
   void construct_range(const InputIterator &it, const int n, const _Tp &value,  const FakeArgument_A1* = NULL){
      printf("2");
   }
   
   template<typename OutputIterator, typename InputIterator>
   void construct_range(const OutputIterator &it, const InputIterator &_first, const InputIterator &_last,  const FakeArgument_A1* = NULL){
      printf("3");
   }
};
   
class Allocator : public Allocator_traits{
public:
#ifdef __cplusplus
   using Allocator_traits::construct_range;
#endif 

   template<typename InputIterator>
   void construct_range(const InputIterator &it, int n,  const FakeArgument_A1* = NULL){
      printf("4");
   }
};


void OnStart(){
   Iterator it = {};
   Allocator alloc;
   
   alloc.construct_range(it, it, it);                          // Compile Error: False Positive Warnings - deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
   alloc.construct_range<Iterator, Iterator>(it, it, it);      // Compile Error: 'construct_range' - wrong template parameters count    
   alloc.construct_range(it, it, it, (FakeArgument_B1*)NULL);  // Bypass False Positive Warnings - "deprecated behavior" 
   
   
   const int n = 5;
   const int value = 0;
   alloc.construct_range(it, n, value);                         // Compile Error: Ok, should be: 'construct_range' - ambiguous call to overloaded function    
   alloc.construct_range(it, n, value, (FakeArgument_B1*)NULL); // OK. Compile Error: - 'construct_range' - ambiguous call to overloaded function       
}

int main(){
   OnStart();
   return 0;
}

C++ online: https://onlinegdb.com/rkbNuGVSL
Какая есть защита от подписчика и его копирования сигнала на свои другие счета?
Опечатка в справке МТ5, раздел MQL5 Reference / Working with DirectX и на сайте - https://www.mql5.com/ru/docs/directx:

DXContextSetSize

Changes a frame size of a graphic context created in DXContextCreate()

DXContextSetSize

Gets a frame size of a graphic context created in DXContextCreate()

Верное значение и ссылка: DXContextGetSize

У кого в MT5 был реджект тейкпрофита, сколько времени жил ордер?

Ошибка тестера (ну или я что то перестал понимать)

Пропала сделка профита в тестере

Очередная встреча с ранее описанным багом - "Undefined Behavior, создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...".
Фактически день ушел на локализацию, воспроизведение и поиск обходных путей, к сожалению все безрезультатно...
Ранее предложенный обходной пусть по использованию фиктивного шаблонного параметра, для нижеприведенного примера оказался не работоспособным.

template<typename _Tp, typename _Opt>
struct It_g{
   class Opt : public _Opt{}; 
   _Tp p;
};

template<typename _Tp>
class A_g{
public:
   struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};

template<typename _Tp>
class V{
public:
   struct It : public  A_g<_Tp>::It{};
   It b;
};

template<typename _Tp>
class Opt_g{
   template<typename _It>
   static void test(_It &it){      
      printf(typename(_Tp));          // int
      printf(typename(it.p));         // ClassA*
      
      _Tp p = it.p;                   // Compiler Error: '=' - illegal operation use
   };
};


template<typename T>
class GetStructType{
public:
   struct type : public T{};
};

template<typename _It>
void test(_It &it){
   GetStructType<_It>::type::Opt::test(it);
}

class ClassA{};


void OnStart(){ 
   V<int> v1;
   test(v1.b);
   
   V<ClassA*> v2;
   test(v2.b);
   
   V<int>::It it3;
   test(it3);
   
   V<ClassA*>::It it4;
   test(it4);
}

Единственное рабочее решение удалось получить с использованием "самопального" auto type, но там дикие издержки на компиляцию с нулевым профитом в скорости работы реального кода...
Прошу помощи, возможно у кого-то есть идеи как это обойти.

Alexey Klenov:

Ошибка тестера (ну или я что то перестал понимать)

Визуализатор по архитектурным причинам не всегда показывает актуальное состояние.

fxsaber:

Визуализатор по архитектурным причинам не всегда показывает актуальное состояние.

Спасибо, буду иметь в виду.