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

 
Кто знает, как связаться с модератором? Или может кто подскажет? У меня в статистике значится пополнение, хотя его отродясь не было. Что это и как его исправить?
 

Такое поведение правильное ?

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

class name

  {

public:

   int func()

     {

      static int t=0;

      t++;

      return t;

     }

  };

name A,B;

//+------------------------------------------------------------------+

void OnInit()

  {

   Print("A "+A.func());

   Print("B "+B.func());

  }

//+------------------------------------------------------------------+

/*

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 2

Ожидалось 

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 1

Так как объявлены разные экземпляры классов 

 
Vladimir Pastushak:

Такое поведение правильное ?

конечно
 
TheXpert:
конечно

То есть статичные переменные видны за пределами своих обьектов ?

 
Vladimir Pastushak:

То есть статичные переменные видны за пределами своих обьектов ?

А если бы было по-вашему, то в чём смысл статиков?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 
Всех прошу поучаствовать в ветке о тестировании CPU для оптимизации.
 

Здравствуйте,

Заметил баги, реплицируемый на нескольких брокерах в МТ5 2085.


1) Если у прямоугольника конечная дата в будущем (например 2020 год), то при максимальном зуме он исчезает с экрана, при уменьшении зума он снова появится. 

2) Если на чарте бары имеют даты из будущего, (например кастомный тиковый чарт, где бары начиаются с октября 2019), то на нем невозможно рисовать, при выборе линии и прямоугольника и клике на чарте и рисовании ничего не происходит. Потом выясняется, что объект был криво нарисован.


Пожалуйста разберитесь, в чем дело и исправьте ошибку. При необходимости могу сделать видео. Спасибо!

 
Прошу помочь разобраться. Следующий код в Тестере открывает окно загрузки сет-файла через вызов соответствующего меню.
#include <WinAPI\winuser.mqh>

#define GA_ROOT           0x00000002

#define WM_COMMAND                     0x0111
#define WM_CONTEXTMENU     0x007B

#define DTM_SETSYSTEMTIME 0x1002

#define MN_GETHMENU     0x01E1  

#define PRINT(x) ; Print(#x, ":", string(x))
#define PRINT64(x) ; printf("%s%s%#.08x", #x, ":", x)

long GetHandle(long handle, int &controls[]){
   long next_handle = handle;                                                                        
   for (int i = 0; i < ArraySize(controls); i++){
      next_handle = user32::GetDlgItem(next_handle, controls[i]);
      PRINT64(next_handle);
   }           
   return next_handle;                
} 

void OnStart(){
  long RootHandle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
  PRINT64(RootHandle);  
  
  int controls[] = {0xE81E, 0x804E, 0x28EF, 0x28FE}; 
  long handle = GetHandle(RootHandle, controls);
  PRINT64(handle);
  
  
//  PRINT(user32::SendMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT(user32::PostMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT("Sleep");
  Sleep(1000);

  const long hpopup=user32::FindWindowW("#32768", NULL);
  PRINT64(hpopup);

  const long hmenu = user32::SendMessageW(hpopup, MN_GETHMENU,0,0);
  PRINT64(hmenu);
  
  uint id=user32::GetMenuItemID(hmenu, 0);
  PRINT64(id);
  
  PRINT(user32::SendMessageW(RootHandle,WM_COMMAND,id,0)); // Выбор пункта меню "Загрузить"
/*
  Sleep(100);
  
  const long hwnd = GetLastActivePopup(RootHandle);
  PRINT64(hwnd);
*/  
}

Этот код отлично работает, когда в Тестере выбрана вкладка "Параметры". Тогда выделенный комментарием в коде SendMessage возвращает 1.

Но если сменить вкладку, то меню вызывается, но в нем не выбирается пункт "Загрузить" - SendMessage возвращает 0. При этом руками в открывшемся меню выбрать пункт получается без проблем.

Подскажите, где загвоздка, что SendMessage возвращает ноль?

 

Всем привет!

Арендовал VPS, перестали копироваться сигналы. Когда отключаю VPS - все работает. Журнал выдает ошибки. С чем может быть связано?

2019.08.12 23:03:18.632 MQL5.community: authorization failed

2019.08.12 23:03:18.632 Signal: '77060013': failed get list of signals, connection error

Файлы:
 

Вопрос о допустимых символах в идентификаторах. Пример

#define MACRO( x )              x## AAA
void OnStart()
{
        int xyz;
        int MACRO( BBB ); //нормально
}

В результате:

получили идентификатор переменной с пробелом.

Если переписать пример так:

#define MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
 то можно сформулировать противоречие: А какая разница между (1) и (2)?
Причина обращения: