Пользователям trans2quik.dll на заметку!

Страницы: 1
RSS
Пользователям trans2quik.dll на заметку!
 
В файле trans2quik_api.h

dwTransID объявлен как DWORD  ( TRANS2QUIK_TRANSACTION_REPLY_CALLBACK и  TRANS2QUIK_ORDER_STATUS_CALLBACK)

На самом деле там LONG (положительные значения)

Пишу, так как все-равно исправлять не будут...
 
Внезапно смотрим в системные хедеры:

>> typedef unsigned long DWORD;
 
читаем внимательно документацию:

DWORD

32-разрядное беззнаковое целое число. Этот тип объявлен в Windef.h как показано ниже:

typedef unsigned long DWORD;
и это не long положительного значения, а беззнаковое число.
Беззнаковое от знакового отличается лишь исполнением операций сравнения на больше меньше
а бинарный код у них одинаковый.
----------------------
Учите мат часть.
 
Внезапно....
Внимательно читаем...


Сами внимательно посмотрите на вложенный файл. И немного пошевелим мозгами!
Посылаем DWORD, а возвращается Long (максимально положительная часть)
 
Посылаемый DWORD больше положительной части LONG, trans2quik (без ошибки) сам кастрирует DWORD до максимально положительного LONG!!!
 
Наконец-то добрался чтобы проверить.
1. Мое сообщение #2говорило о том, что DWORD и LONG одно и тоже. Я не внял что сыр-бор изза знаковости.
2. Проверил, да, квик через транс2квик обрезает dwTransID если он больше "максимально положительного LONG".

Но, при этом в документации написано (см. скрин) "Указатель типа Long", т.е. никто не обещаел что с числом будут обращаться как с беззнаковым.
Согласен, что есть расхождение в прототипе, и описании, и наверное это все-таки баг.

Но, признайтесь честно, вы уже подаете 2млрд. транзакций в течении одного торгового дня, и вам не хватает знакового диапазона чтобы покрыть свои нужды?
Или тут принципиальный момент?
Страницы: 1
Читают тему (гостей: 1)
Наверх