Новая версия платформы MetaTrader 5 build 4230: больше встроенных приложений и расширение поддержки ONNX - страница 7
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
старший бит у TERMINAL_KEYSTATE_XXX - 31й, а у GetKeyState() - 15й - т.е. Вы сравниваете заведомо разные биты
Примерно как нейросеть действуете
При том, что в том же MSDN на который Вы сослались есть пример (в сокращенном виде):
Как видите они там сравнивают результат GetKeyState не с -1, а с битом 0x8000
???
Спасибо, поправил.
Примерно как нейросеть действуете
При том, что в том же MSDN на который Вы сослались есть пример (в сокращенном виде):
Как видите они там сравнивают результат GetKeyState не с -1, а с битом 0x8000
Вот нашёл разжёванный вариант объясняющий работу GetKeyState, и не вижу принципиальной разницы между сравниванием с -1 и 0x8000. По сути, тот же ху~ только в левой руке.
" Для шестнадцатеричного 0x8000 только 15 бит выставлен в значение 1, если биты считать с 0.
А функция GetKeyState возвращает знаковый тип SHORT, размер которого два байта (16 бит), и для любого отрицательного числа старший бит устанавливает в значение 1.
Следовательно, после приведения выражения GetKeyState(virtual_key_code) & 0x8000 к логическому типу, для любого отрицательного virtual_key будет возвращаться true.
Старший бит сообщает о том, что клавиша нажата, младший – о её переключении (например, CapsLock включен)."
Вот нашёл разжёванный вариант объясняющий работу GetKeyState, и не вижу принципиальной разницы между сравниванием с -1 и 0x8000. По сути, тот же ху~ только в левой руке.
Для GetKeyState разницы нет, а для TERMINAL_KEYSTATE_XXX - есть, потому что
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Бета-версия платформы MetaTrader 5 build 4210: больше встроенных приложений и расширение поддержки ONNX
A100, 2024.03.04 18:57
старший бит у TERMINAL_KEYSTATE_XXX - 31й, а у GetKeyState() - 15й - т.е. Вы сравниваете заведомо разные биты
Для GetKeyState разницы нет, а для TERMINAL_KEYSTATE_XXX - есть, потому что
Блин :(
Вот честно пытаюсь, но не получается понять в чём разница.
Если два выражения возвращают одно и то же число, то какая разница на каком месте бит?
В противном случае, если нажата другая клавиша оба эти выражения возвращают нольВот простейший пример, когда сравнение с -1 и 0x8000 дает разный результат:
Не корректный пример, так как мы имеем дело не абстрактным(любым) числом, а с конкретным числом которое возвращает функция.
А функция возвращает не абы какое число, а именно GetKeyState () -127 или -128 или 1, TERMINAL_KEYSTATE_XXX -32767 или 0
Для конкретно этих чисел вполне корректно работает сравнение с -1
Не корректный пример, так как мы имеем дело не абстрактным(любым) числом, а с конкретным числом которое возвращает функция.
А функция возвращает не абы какое число, а именно GetKeyState () -127 или -128 или 1, TERMINAL_KEYSTATE_XXX -32767 или 0
Для конкретно этих чисел вполне корректно работает сравнение с -1
А Вы со всеми TERMINAL_KEYSTATE_XXX это проверили - там их порядка 20ти разных ?
Если не со всеми - то это у Вас некорректный пример, а не у меня
А Вы со всеми TERMINAL_KEYSTATE_XXX это проверили - там их порядка 20ти разных ?
Нет, только с TERMINAL_KEYSTATE_CONTROL.
Если не со всеми - то это у Вас некорректный пример, а не у меня