eddy:
а можно как-то сразу в функции сложить эти элементы чтоб получить время в виде мс прошедших с начала дня (мс + сек*1000 + мин*60*1000 + часы*60*60*1000), вместо того чтоб распределять структуру в массив?
int mS=b(6)+ b(7)*1000 + b(4)*60000 + b(5)*3600000);
eddy:
это я и сам ранее написал, вопрос был в том как получить эти количества не распределяя в массив
Про это выше написал. Нет такого типа в MQL4, чтобы хранить такое число.
В Windows оно имеет тип DWORD64 == unsigned __int64 .
Но это число представлено структурой из двух
DWORD. Младшее можно взять и как-то там препарировать. Всё равно, надо будет возиться с массивом и побитовым смещением.
хотя вроде можно и без массива, но не уверен что возможны выражения типа х = (х >> 16) + y; или возможны?
Не уверен - так проверь, в чём проблема-то? Я просто удивляюсь, как с таким подходом можно вообще заниматься программированием. Ладно бы речь шла о длинном коде, но здесь то одна строчка всего. А если не знаком с двоичной системой, то советую разобраться с ней для начала, т.к. это основа основ.
а можно как-то сразу в функции сложить эти элементы чтоб получить время в виде мс прошедших с начала дня (мс + сек*1000 + мин*60*1000 + часы*60*60*1000), вместо того чтоб распределять структуру в массив?
1000 х (количество секунд с начала дня) + (количество миллисекунд из последней ячейки) = (количество миллисекунд с начала дня)
Что означает "(количество миллисекунд из последней ячейки)" ?
Совсем парня запутаете...
;)
насколько я понимаю в твоём коде операции с элементами массива
1000 х (количество секунд с начала дня) + (количество миллисекунд) = (количество миллисекунд с начала дня)
насколько я понимаю в твоём коде операции с элементами массива
да - просто раскидываю из массива из 4х 32битных ячеек 16битные значения в восемь элементов массива.
Дальше их можно использовать.
32бит - int в MQL. Типа данных на 16 бит нет. Потому и вынуждены работать так.
это я и сам ранее написал, вопрос был в том как получить эти количества не распределяя в массив
Про это выше написал. Нет такого типа в MQL4, чтобы хранить такое число.
В Windows оно имеет тип DWORD64 == unsigned __int64 .
Но это число представлено структурой из двух DWORD. Младшее можно взять и как-то там препарировать. Всё равно, надо будет возиться с массивом и побитовым смещением.
Хотя, тоже не выйдет. В MQL4 нет типа DWORD.
и ещё интересно возможны выражения типа х = (х >> 16) + y;
понятно что можно просто изменить for на (i=2;i<4;i++), а лучше на (i=4;i<8;i+=2) и в блоке заменить i*2 на i,
но интересует можно ли ограничиться 2мя ячейками массива "a", ведь вся структура не нужна
Что означает "(количество миллисекунд из последней ячейки)" ?
Совсем парня запутаете...
;)
хотя вроде можно и без массива, но не уверен что возможны выражения типа х = (х >> 16) + y; или возможны?