TheXpert: Можно доставать резерв грязными хуками и проверить поведение ресайза ручками
Предположительно, в памяти объекта массива переменная под reserved size лежит рядом с переменной под size. Однако на текущий момент, есть десяток более приоритетных задач, чем дебаг или копание в памяти МТ с целью изучения влияния ArrayResize на поле reserved size объекта массива.
Sergey Dzyublik: Выполнить type cast "самого в себя", оказывается, не все типы данных и могут... Шаблонные классы ломаются при компиляции, а со структурам все ОК.
Спасибо, не подумал про доступ к памяти процесса с помощью WinApi.
П.с. личка закрыта, по этому пишу тут: "В reverse engineering термин хук имеет конкретное значение - код для перехват вызова некой функции или события."
Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисленияENUM_TIMEFRAMES.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Шаблонные классы ломаются при компиляции, а со структурам все ОК.
Можно доставать резерв грязными хуками и проверить поведение ресайза ручками
Предположительно, в памяти объекта массива переменная под reserved size лежит рядом с переменной под size.
Однако на текущий момент, есть десяток более приоритетных задач, чем дебаг или копание в памяти МТ с целью изучения влияния ArrayResize на поле reserved size объекта массива.
Выполнить type cast "самого в себя", оказывается, не все типы данных и могут...
Шаблонные классы ломаются при компиляции, а со структурам все ОК.
Спасибо за сообщение.
Это рудимент, исправим.
Спасибо, не подумал про доступ к памяти процесса с помощью WinApi.
П.с. личка закрыта, по этому пишу тут:
"В reverse engineering термин хук имеет конкретное значение - код для перехват вызова некой функции или события."
буду знать ) тогда хак
Перевожу программу с MQL4 на MQL5.
Столкнулся с такой ошибкой.
На таймфреймах до m30 значение Period() выдается правильно.
2019.05.22 17:45:38.628 TestStat (GBPUSD,M15) 4854 Period()=15
2019.05.22 17:46:08.267 TestStat (GBPUSD,M30) 4854 Period()=30
А начиная с таймфрейма H1 выводятся непонятные значения.
2019.05.22 17:31:07.446 TestStat (GBPUSD,H1) 4854 Period()=16385
2019.05.22 17:46:39.362 TestStat (GBPUSD,H4) 4854 Period()=16388
2019.05.22 17:46:55.552 TestStat (GBPUSD,D1) 4854 Period()=16408
Версия терминала build 2057 от 21 мая 2019 года.
Спасибо.
В описании:
Period
Возвращает значение таймфрейма текущего графика.
ENUM_TIMEFRAMES Period();
Возвращаемое значение
Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
Смотри также
PeriodSeconds, Периоды графиков, Дата и время, , Видимость объектов
=================
Как-то плохо все сделано. В описании должно быть корректно написано. А не на форуме надо искать источник проблемы.
Выходит, Period() выдат не значение текущего таймфрейма, как это сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
А что-то совсем другое.
Разработчики поправьте описание языка.
Имеем следующие результаты по ArrayResize capacity МТ5(build 2057):
Результат: