В связи с появлением файла Trans2QuikAPI_1.3.rar возникли вопросы:
1) dll-64 будет работать только с QUIK версии 7 и выше? 2) Где взять пример работы с dll-64 из Excel? 3) В версии 1.2 была директория Sample_Excel, в версии 1.3 ее нет – почему (?) и если тут какой-то негатив для перспектив тех кто работает с вашей программой из Excel?
guest_sl пишет: 1) dll-64 будет работать только с QUIK версии 7 и выше?
Да
Цитата
guest_sl пишет: 2) Где взять пример работы с dll-64 из Excel?
он такой же как для х32
Цитата
guest_sl пишет: 3) В версии 1.2 была директория Sample_Excel, в версии 1.3 ее нет – почему (?) и если тут какой-то негатив для перспектив тех кто работает с вашей программой из Excel?
Не понятно: имя dll-файла не изменилось, при этом новый архив (просто новой версии, не новый продукт) содержит только одну версию trans2quik.dll Она теперь будет только всегда 64-х битная? или как? т.е. не понятно как две версии будут сосуществовать теперь "по жизни".
В ней содержательно нет ничего нового. Только другая разрядность. Так что пользуясь версией 1.2 (если у вас 32-х битное внешнее приложение) вы ничего не теряете в плане функционала.
Добрый день! Перешел с 32-битной dll trans2quik на 64-битную, соответственно и эксель теперь 64-битный (Офис 2016)
В описаниях функций добавил PtrSafe: Public Declare PtrSafe Function TRANS2QUIK_CONNECT Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_CONNECT@16" _ (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_DISCONNECT@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_IS_QUIK_CONNECTED@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_IS_DLL_CONNECTED Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_IS_DLL_CONNECTED@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_SYNC_TRANSACTION@36" _ (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _ ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_ASYNC_TRANSACTION@16" _ (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
При вызовах функций выходит ошибка вида Например при вызове TRANS2QUIK_IS_QUIK_CONNECTED: Run-Time Error '453' Can't find DLL entry point _TRANS2QUIK_IS_QUIK_CONNECTED@12 in C:\trans2quik.dll
Подскажите пожалуйста в чем может быть ошибка? (На Экселе 2003 32-битная dll работала как часы)
QUIK 7.16.3.14 Проверить работу на ваших примерах не представляется возможным, так как в них нет примера на MS Excel. Примеры trans2quik версии 1.2 не подходят, поскольку на 64-битной версии MS Excel вызов dll организован несколько иначе, чем на 32-битной
Сергей написал: QUIK 7.16.3.14 Проверить работу на ваших примерах не представляется возможным, так как в них нет примера на MS Excel. Примеры trans2quik версии 1.2 не подходят, поскольку на 64-битной версии MS Excel вызов dll организован несколько иначе, чем на 32-битной
Пример для Excel версии trans2quik 1.2 будет работать и для версии trans2quik 1.3 .
Сергей написал: QUIK 7.16.3.14 Проверить работу на ваших примерах не представляется возможным, так как в них нет примера на MS Excel. Примеры trans2quik версии 1.2 не подходят, поскольку на 64-битной версии MS Excel вызов dll организован несколько иначе, чем на 32-битной
Пример для Excel версии trans2quik 1.2 будет работать и для версии trans2quik 1.3 .
Даже просто при открытии файла из примера trans2quik 1.2 выходит сообщение об ошибке:
Compile error: The code in this project must be updated for use on 64-bit systems. Please review and update Declare statements and then mark them with the PtrSafe attribute.
Затем открывается текст VBA кода выделенный красным цветом. Могу выслать принтскрин...
Сергей написал: QUIK 7.16.3.14 Проверить работу на ваших примерах не представляется возможным, так как в них нет примера на MS Excel. Примеры trans2quik версии 1.2 не подходят, поскольку на 64-битной версии MS Excel вызов dll организован несколько иначе, чем на 32-битной
Пример для Excel версии trans2quik 1.2 будет работать и для версии trans2quik 1.3 .
Даже просто при открытии файла из примера trans2quik 1.2 выходит сообщение об ошибке:
Compile error: The code in this project must be updated for use on 64-bit systems. Please review and update Declare statements and then mark them with the PtrSafe attribute.
Затем открывается текст VBA кода выделенный красным цветом. Могу выслать принтскрин...
Добрый день.
Да, в 64х разрядном Excel работать не будет. Возвращаемся в к первоначальной ошибки. Пришлите полный код, который вы загружаете.
Public PathToInfo As String = "C:\QUIK\" Public Const dwErrorMessageSize As Long = 250 Public Const dwResultMessageSize As Long = 250 Dim FunctionResult As Long Dim FunctionResultString As String Dim pnExtendedErrorCode As Long Dim lpstrErrorMessage As String * 250 Dim nReturnCode As Long Dim dwTransID As Long Dim dordernum As Double Dim lpstrResultMessage As String * 250 Dim TransStr As String
Public Declare PtrSafe Function TRANS2QUIK_CONNECT Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_CONNECT@16" _ (ByVal lpstConnectionParamsString As String, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_DISCONNECT Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_DISCONNECT@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_IS_QUIK_CONNECTED Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_IS_QUIK_CONNECTED@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_IS_DLL_CONNECTED Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_IS_DLL_CONNECTED@12" _ (ByRef pnExtendedErrorCode As Long, ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_SEND_SYNC_TRANSACTION Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_SYNC_TRANSACTION@36" _ (ByVal lpstTransactionString As String, ByRef pnReplyCode As Long, ByRef pdwTransId As Long, ByRef pdOrderNum As Double, _ ByVal lpstrResultMessage As String, ByVal dwResultMessageSize As Long, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Declare PtrSafe Function TRANS2QUIK_SEND_ASYNC_TRANSACTION Lib "C:\trans2quik.dll" Alias "_TRANS2QUIK_SEND_ASYNC_TRANSACTION@16" _ (ByVal lpstTransactionString As String, ByRef pnExtendedErrorCode As Long, _ ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long
Public Sub Connect_Click() FunctionResult = TRANS2QUIK_CONNECT(PathToInfo, pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub DisConnect_Click() FunctionResult = TRANS2QUIK_DISCONNECT(pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub CheckQuikConnect_Click() FunctionResult = TRANS2QUIK_IS_QUIK_CONNECTED(pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub CheckDLLConnect_Click() FunctionResult = TRANS2QUIK_IS_DLL_CONNECTED(pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub btn_SendOrderASync_Click() TransStr = "ACTION=NEW_ORDER; TRANS_ID=208; CLASSCODE=TQBR; SECCODE=LKOH; ACCOUNT=L01+00000F00; CLIENT_CODE=U1294; TYPE=L; OPERATION=B; QUANTITY=1; PRICE=4000" FunctionResult = TRANS2QUIK_SEND_ASYNC_TRANSACTION(TransStr, pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub btn_SendOrderSync_Click() TransStr = "ACTION=NEW_ORDER; TRANS_ID=208; CLASSCODE=TQBR; SECCODE=LKOH; ACCOUNT=L01+00000F00; CLIENT_CODE=U1294; TYPE=L; OPERATION=B; QUANTITY=1; PRICE=4000" FunctionResult = TRANS2QUIK_SEND_SYNC_TRANSACTION(TransStr, nReturnCode, dwTransID, dordernum, lpstrResultMessage, dwResultMessageSize, pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Public Sub btn_SendKillSync_Click() TransStr = "ACTION=KILL_ORDER; CLASSCODE=TQBR; SECCODE=LKOH; TRANS_ID=200; ORDER_KEY=" & CStr(Cells(8, 1)) FunctionResult = TRANS2QUIK_SEND_SYNC_TRANSACTION(TransStr, nReturnCode, dwTransID, dordernum, lpstrResultMessage, dwResultMessageSize, pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize) End Sub
Сергей, попробуйте во всех функция указать следующим образом. Заменить строки типа: _TRANS2QUIK_SEND_ASYNC_TRANSACTION@16 на TRANS2QUIK_SEND_ASYNC_TRANSACTION, заменить _TRANS2QUIK_IS_QUIK_CONNECTED@12 на TRANS2QUIK_IS_QUIK_CONNECTED и так далее по всему коду. Сообщите результат.
Сергей написал: Если строки заменить как вы предлагаете, то компилятор автоматически удаляет в коде выражение [Alias "TRANS2QUIK_IS_QUIK_CONNECTED"]
Добрый день, По ряду архитектурных особенностей 64-разрядного Excel существующий ранее пример использования TRANS2QUIK.DLL работать не будет, поэтому мы не распространяем его с новой версией библиотеки.
Спасибо за разъяснения. А что посоветуете делать тем, кто использует Excel и trans2quik.dll для своих роботов? (вариант с текстовым файлом я знаю, но это прошлый век к сожалению)
Anastasia Gordienko написал: По ряду архитектурных особенностей 64-разрядного Excel существующий ранее пример использования TRANS2QUIK.DLL работать не будет, поэтому мы не распространяем его с новой версией библиотеки.
Okay, Quik [%-)]... а где тогда можно найти работающий пример использования TRANS2QUIK.DLL в Excel-64? Он существует в природе? Quik вообще работает с Excel-64 через TRANS2QUIK.DLL? Люди же не от праздности интересуются, а для работы... помогите, пожалуйста, с данной информацией...
Anastasia Gordienko написал: По ряду архитектурных особенностей 64-разрядного Excel существующий ранее пример использования TRANS2QUIK.DLL работать не будет, поэтому мы не распространяем его с новой версией библиотеки.
Okay, Quik [%-)]... а где тогда можно найти работающий пример использования TRANS2QUIK.DLL в Excel-64? Он существует в природе? Quik вообще работает с Excel-64 через TRANS2QUIK.DLL? Люди же не от праздности интересуются, а для работы... помогите, пожалуйста, с данной информацией...
Добрый день.
Такого примера в текущий момент нет. Можем зарегистрировать пожелание на доработку.
Egor Zaytsev написал: Такого примера в текущий момент нет. Можем зарегистрировать пожелание на доработку.
Конечно нужно регистрировать на доработку, какие сомнения. По мне так это и не доработка вовсе, а восстановление привычного состояния - когда есть декларируемая технология/интерфейс работы с программой и есть пример ее использования. Так было всегда, зачем для Excel-64 делать столь негативное исключение... Excel остается наиболее массовым продуктом с наименее высоким порогом входа в вопросы автоматизации работы на фондовом рынке... именно тут и нужен рабочий пример... люди, пишущие на C++ и т.п. языках в состоянии сами многое понять и решить, а тем, кому доступен только Excel/VBA (а таких людей имхо достаточно много) пример откроет окно возможностей...
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Добрый день! Просьба прояснить судьбу данного запроса, сделанного полтора года назад.
1. Есть ли пример использования TRANS2QUIK.DLL в 64-х разрядном excel? 2. TRANS2QUIK.DLL вообще работает с excel x64/VBA, вы хоть раз проверяли?
Последний год у меня проблемы с обработкой в excel данных, поступающих из квик-а. Тормозит экспорт. Хочу попробовать решить эту проблему перейдя на новую x64 версию excel ( с MSOffice2010 ->). Есть надежда, что там используется распараллеливание вычислений и по памяти себя он так не ограничивает.
Пожалуйста ответьте также: 3. Сделали ли вы возможность экспорта по DDE времени сервера?
Я этот запрос делал лет 10 назад, потом видел аналогичный запрос на форуме года 4 назад...
Сегодня вот решил зайти и посмотреть как там с разработкой 64xAPI и обнаружил, что меня уже вообще нет в пользователях форума, а ведь регистрировался я в начале 2006 года ... :(
mp65 написал: 1. Есть ли пример использования TRANS2QUIK.DLL в 64-х разрядном excel? 2. TRANS2QUIK.DLL вообще работает с excel x64/VBA, вы хоть раз проверяли?
Вы можете скачать x64 версию библиотеки по следующей ссылке. К сожалению, для trans2quik.dll x64 пример использования в Excel x64/VBA не представлен. Пример использования trans2quik.dll приведён для x32-версии библиотеки. Также нам известны примеры успешного использования x64-версии библиотеки вместе с x64-версией Excel. Если у Вас имеются какие-либо конкретные вопросы по использованию API, либо затруднения - просим их сформулировать для дальнейшего разбора.
Цитата
mp65 написал: 3. Сделали ли вы возможность экспорта по DDE времени сервера?
К сожалению, в чистом виде такой возможности не предусмотрено. Экспорт времени сервера по DDE можно выполнить из таблицы, созданной при помощи lua-скрипта. Для получения значения времени сервера следует использовать функцию getInfoParam("SERVERTIME").
При подготовке дистрибутива модуля API импорта транзакций 1.3 x64 нами не был реализован и добавлен в дистрибутив пример использования данного API совместно с Excel x64/VBA.