Ошибки, баги, вопросы - страница 2501
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так и происходит
попробовал вот так:
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++ писать - там можно "чистые" данные принять / отправить
Не помню, в документации об этом есть.
Спасибо, нашёл. На мой взгляд всё работает. Поскольку в вашем примере только один тип в структуре, то и выравнивать нет смысла. Потому и даёт размер только типа. А вот так получается
А такая структура
В документации очень наглядно объясняется в картинках.
Спасибо, нашёл. На мой взгляд всё работает. Поскольку в вашем примере только один тип в структуре, то и выравнивать нет смысла. Потому и даёт размер только типа. А вот так получается
А такая структура
В документации очень наглядно объясняется в картинках.
да, так работает:
2019.07.07 19:16:27.100 tst (EURUSD,H1) 4294967295 4294967295 4294967295 4294967295
2019.07.07 19:16:27.100 tst (EURUSD,H1) A:
2019.07.07 19:16:27.100 tst (EURUSD,H1) 0 0 0 4294967295
2019.07.07 19:16:27.100 tst (EURUSD,H1) B:
2019.07.07 19:16:27.100 tst (EURUSD,H1) 0 0 0 0
2019.07.07 19:16:27.100 tst (EURUSD,H1) sizeof(A) = 12 , sizeof(B) = 16
итого: pack() выполняет выравнивание данных в структуре на размер максимального sizeof() поля структуры
итого: pack() выполняет выравнивание данных в структуре на размер максимального sizeof() поля структуры
Не совсем так.
максимальное поле 8 байт, задали выравнивание 4 и получили 16. То-есть 2+2|4|2+2|2+добавка short doubleint
Или 2+добавка|4|4|4
Не совсем так.
максимальное поле 8 байт, задали выравнивание 4 и получили 16. То-есть 2+2|4|2+2|2+добавка short doubleint
Или 2+добавка|4|4|4
да, тогда наверное так корректно звучать должно:
итого: pack() выполняет выравнивание данных в структуре поэлементно , каждый элемент будет дополнен значением кратным pack() с учетом максимального sizeof() элемента структуры (не более максимального значения, менее может быть при дополнении)
pack(4) :
short = 2 + 2 дополним = 4 = pack(4)
double = 8 - не выравниваем
int = 4 - не выравниваем
sizeof() = 16 байт
да, тогда наверное так корректно звучать должно:
итого: pack() выполняет выравнивание данных в структуре поэлементно , каждый элемент будет дополнен значением кратным pack() с учетом максимального sizeof() элемента структуры (не более максимального значения, менее может быть при дополнении)
pack(4) :
short = 2 + 2 дополним = 4 = pack(4)
double = 8 - не выравниваем
int = 4 - не выравниваем
sizeof() = 16 байт
Замудрёно звучит, но мне понятно.)))
Замудрёно звучит, но мне понятно.)))
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2019.07.07 15:03
от порядка полей зависит потребление памяти и, видимо, производительность.
Пока не смог до конца понять.