Ошибки, баги, вопросы - страница 2500
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Давно, как присутствует.
Не помните где об этом писали?
Тогда боюсь, смысл выравнивания теряется
попробовал в байтах посмотреть что выравнивание делает:
2019.07.07 17:51:30.601 tst (EURUSD,H1) 0xFFFFFFFF FFFFFFFF = 4294967295,4294967295
2019.07.07 17:51:30.601 tst (EURUSD,H1) A. = 4294901760,4294967295
2019.07.07 17:51:30.601 tst (EURUSD,H1) B. = 4294901760,4294967295
или я еще не проснулся, или не работает выравнивание pack(4) / pack(8) , я компилятору однозначно указал размеры структур A и B
даже так:
ничего не изменилосьНе помните где об этом писали?
Не помню, в документации об этом есть.
попробовал в байтах посмотреть что выравнивание делает:
или я еще не проснулся, или не работает выравнивание pack(4) / pack(8) , я компилятору однозначно указал размеры структур A и B
Так с этого и началось данное обсуждение. Оказалось, что все совсем не так.
Ну и пример некорректный все таки. Обнуляя ushort-поле, добавочные байты вовсе не обязаны меняться.
ZeroMemory, скорее всего, ориентируется на sizeof, а он двойка в обоих случаях по каким-то своих причинам.
Так с этого и началось данное обсуждение. Оказалось, что все совсем не так.
1. Ну и пример некорректный все таки. Обнуляя ushort-поле, добавочные байты вовсе не обязаны меняться.
2 ZeroMemory, скорее всего, ориентируется на sizeof, а он двойка в обоих случаях по каким-то своих причинам.
1. да согласен
2. ZeroMemory как раз и должен мне обнулить память
в общем не вижу я смысла в pack() в чистом MQL, максимум можно в .dll погонять данные, но уж там то точно должно работать - так разработчики заявили
2. ZeroMemory как раз и должен мне обнулить память
Так и происходит
Так и происходит
попробовал вот так:
2019.07.07 18:31:02.708 tst (EURUSD,H1) 4294967295 4294967295 4294967295 4294967295
2019.07.07 18:31:02.708 tst (EURUSD,H1) A:
2019.07.07 18:31:02.708 tst (EURUSD,H1) 0 4294967295 4294967295 4294967295
2019.07.07 18:31:02.708 tst (EURUSD,H1) B:
2019.07.07 18:31:02.708 tst (EURUSD,H1) 0 4294967295 4294967295 4294967295
2019.07.07 18:31:02.708 tst (EURUSD,H1) sizeof(A) = 4 , sizeof(B) = 4
все равно обнулим только первые 4 байта
попробовал еще так:
все равно нет результата - только первые 4 байта обнуляет
все равно нет результата - только первые 4 байта обнуляет
Потому что физически структура из 4-х байтов.
Потому что физически структура из 4-х байтов.
да, это мы уже выяснили, что pack() не работает внутри MQL - у меня больше нет вариантов проверок pack()
думал в .dll проверить на С#, а ведь там тоже засада - MQL видит сигнатуру вызываемой функции (помните при вызове const в сигнатурах не получилось вызвать C# ),
и при передаче данных в C# возможно будет преобразование типов?
ЗЫ: максимум .dll на C++ писать - там можно "чистые" данные принять / отправить