чем заменить GetTickCount(), для подсчёта миллисекунд? (помогите с API) - страница 3

 
eddy:
а можно как-то сразу в функции сложить эти элементы чтоб получить время в виде мс прошедших с начала дня (мс + сек*1000 + мин*60*1000 + часы*60*60*1000), вместо того чтоб распределять структуру в массив?

int mS=b(6)+ b(7)*1000 + b(4)*60000 + b(5)*3600000);
 
Zhunko:
1000 х (количество секунд с начала дня) + (количество миллисекунд из последней ячейки) = (количество миллисекунд с начала дня)


Что означает "(количество миллисекунд из последней ячейки)" ?

Совсем парня запутаете...

;)

 
Sorento:

насколько я понимаю в твоём коде операции с элементами массива
 
Zhunko:
1000 х (количество секунд с начала дня) + (количество миллисекунд) = (количество миллисекунд с начала дня)
это я и сам ранее написал, вопрос был в том как получить эти количества не распределяя в массив
 
eddy:

насколько я понимаю в твоём коде операции с элементами массива


да - просто раскидываю из массива из 4х 32битных ячеек 16битные значения в восемь элементов массива.

Дальше их можно использовать.

32бит - int в MQL. Типа данных на 16 бит нет. Потому и вынуждены работать так.

 
eddy:
это я и сам ранее написал, вопрос был в том как получить эти количества не распределяя в массив

Про это выше написал. Нет такого типа в MQL4, чтобы хранить такое число.

В Windows оно имеет тип DWORD64 == unsigned __int64 .

Но это число представлено структурой из двух DWORD. Младшее можно взять и как-то там препарировать. Всё равно, надо будет возиться с массивом и побитовым смещением.

Хотя, тоже не выйдет. В MQL4 нет типа DWORD.

 
если без массивов никак, то можно хотя бы вытащить только последние 4 значения, из 2х последних 32-битных ячеек?
/*
  wHour As Integer           5
  wMinute As Integer         4
  wSecond As Integer         7
  wMilliseconds As Integer   6

и ещё интересно возможны выражения типа х = (х >> 16) + y;

 
eddy:
можно вытащить только последние 4 значения, из 2х последних 32-битных ячеек?

понятно что можно просто изменить for на (i=2;i<4;i++), а лучше на (i=4;i<8;i+=2) и в блоке заменить i*2 на i,

но интересует можно ли ограничиться 2мя ячейками массива "a", ведь вся структура не нужна

 
Sorento:


Что означает "(количество миллисекунд из последней ячейки)" ?

Совсем парня запутаете...

;)

Это означает - последнюю ячейку Вашего массива.
 
eddy:
...

хотя вроде можно и без массива, но не уверен что возможны выражения типа х = (х >> 16) + y; или возможны?

Не уверен - так проверь, в чём проблема-то? Я просто удивляюсь, как с таким подходом можно вообще заниматься программированием. Ладно бы речь шла о длинном коде, но здесь то одна строчка всего. А если не знаком с двоичной системой, то советую разобраться с ней для начала, т.к. это основа основ.
Причина обращения: