Заметил баги, реплицируемый на нескольких брокерах в МТ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;
}
voidOnStart(){
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);
constlong hpopup=user32::FindWindowW("#32768", NULL);
PRINT64(hpopup);
constlong 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 возвращает ноль?
то можно сформулировать противоречие: А какая разница между (1) и (2)?
Ну а с точки зрения си/с++ в мкл ошибка. До/после оператора ## можно всунуть любое количество пробелов/комментариев, сначала будет произведена разбивка на токены, а потом запуск препроцессора, т.е. он эти пробелы даже не увидит, в стандарте пример есть (hash_hash):
могут быть использованы только те токены, которые вместе формируют валидный токен.
ЗЫ: некоторые говрят, что си/с++ для них не авторитет, мол чего о них всё время вспоминают, да и вообще тут мкл, а не ..., может у них есть правильное объяснение?
При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.
Aleksey Vyazmikin: При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.
30 МБ текста явно не нужно для работы. Один раз помучайтесь, потом вынесите эти данные в инклуд.
То есть статичные переменные видны за пределами своих обьектов ?
А если бы было по-вашему, то в чём смысл статиков?
Здравствуйте,
Заметил баги, реплицируемый на нескольких брокерах в МТ5 2085.
1) Если у прямоугольника конечная дата в будущем (например 2020 год), то при максимальном зуме он исчезает с экрана, при уменьшении зума он снова появится.
2) Если на чарте бары имеют даты из будущего, (например кастомный тиковый чарт, где бары начиаются с октября 2019), то на нем невозможно рисовать, при выборе линии и прямоугольника и клике на чарте и рисовании ничего не происходит. Потом выясняется, что объект был криво нарисован.
Пожалуйста разберитесь, в чем дело и исправьте ошибку. При необходимости могу сделать видео. Спасибо!
Этот код отлично работает, когда в Тестере выбрана вкладка "Параметры". Тогда выделенный комментарием в коде SendMessage возвращает 1.
Но если сменить вкладку, то меню вызывается, но в нем не выбирается пункт "Загрузить" - SendMessage возвращает 0. При этом руками в открывшемся меню выбрать пункт получается без проблем.
Подскажите, где загвоздка, что SendMessage возвращает ноль?
Всем привет!
Арендовал VPS, перестали копироваться сигналы. Когда отключаю VPS - все работает. Журнал выдает ошибки. С чем может быть связано?
2019.08.12 23:03:18.632 MQL5.community: authorization failed
Вопрос о допустимых символах в идентификаторах. Пример
В результате:
получили идентификатор переменной с пробелом.
Если переписать пример так:
то можно сформулировать противоречие: А какая разница между (1) и (2)?Вопрос о допустимых символах в идентификаторах. Пример
В результате:
получили идентификатор переменной с пробелом.
Если переписать пример так:
то можно сформулировать противоречие: А какая разница между (1) и (2)?Ну а с точки зрения си/с++ в мкл ошибка. До/после оператора ## можно всунуть любое количество пробелов/комментариев, сначала будет произведена разбивка на токены, а потом запуск препроцессора, т.е. он эти пробелы даже не увидит, в стандарте пример есть (hash_hash):
могут быть использованы только те токены, которые вместе формируют валидный токен.
ЗЫ: некоторые говрят, что си/с++ для них не авторитет, мол чего о них всё время вспоминают, да и вообще тут мкл, а не ..., может у них есть правильное объяснение?
может у них есть правильное объяснение?
При работе с большими исходными файлами ME сильно подвисает - два файла 30 мегабайт, даже переход с одного на другой приводит к подвисанию, особенно если копировать большой объем кода из одного в другой. Да и вообще, редактирование таких файлов приводит к работе в замедленном действии - утомляет.
30 МБ текста явно не нужно для работы. Один раз помучайтесь, потом вынесите эти данные в инклуд.