Сложности, замечания по работе с trans2quik.dll.

Страницы: 1
RSS
Сложности, замечания по работе с trans2quik.dll.
 
Добрый день. Возникли определенные вопросы по работе с инструментарием trans2quik.dll. Версия файла 1.2.0.3. Версия Quik 7.8.1.21.
  1. В руководстве по quik, в шестой главе, описаны названия функции и прототипы функций на c++. Почему нельзя было написать в руководстве имена функций, так как они именуются в dll. Иначе нельзя вызвать требуемую функцию, её просто нет.
  2. В руководстве есть описание 18-ти функции. В библиотеке их 68 шт. Есть ли где-то описание на остальные функции? Или они только для служебных нужд dll?
  3. При вызове функции TRANS2QUIK_CONNECT возвращаемое функцией значение = 14, что соответствует константе wrong input params. Первый параметр при вызове функции СИ строка “E:\QuikJunior”, далее: указатель на long, указатель на строку, указатель на long. Почему не получается успешно выполнить функцию не понятно.
Буду признателен за помощь. PS. : Обращаюсь к библиотеке из VB6.0
 
Здравствуйте,
1. Вопрос к сожалению не понятен.
2. Использовать следует только те функции которые описаны в документации. Какого-либо секретного документа не существует.
3. Проверьте включена ли обработка внешних транзакций в терминале.
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
1. Вопрос к сожалению не понятен.
2. Использовать следует только те функции которые описаны в документации. Какого-либо секретного документа не существует.
3. Проверьте включена ли обработка внешних транзакций в терминале.

1. По первому вопросу, например, если вызвать функцию по имени TRANS2QUIK_CONNECT, то такой функции в библиотеке нет. Возникает ошибка, связанная с тем, что функция не найдена. Вызываю функцию под псевдонимом _TRANS2QUIK_CONNECT@16. Она в библиотеке присутствует, но возвращает ошибку 14. Может я вызываю не ту функцию. Какую тогда нужно вызвать, чтобы установить соединение dll с quik.
2. Обработка внешних транзакций в терминале включена.  
 
Приведите пример кода где вы объявляете функцию и где вызываете
 
Цитата
Код
'Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long

Private Const TRANS2QUIK_DLL_NOT_CONNECTED As Long = 7
Private Const TRANS2QUIK_DLL_CONNECTED As Long = 8


Private Declare Function TRANS2QUIK_CONNECT Lib _
    "C:\TRANS2QUIK.dll" Alias "_TRANS2QUIK_CONNECT@16" (ByVal lpcstrCnnectionParamsString As String, ByVal pnExtendedErrorCode As Long, _
    ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long



Private Declare Function TRANS2QUIK_IS_DLL_CONNECTED Lib _
    "C:\Documents and Settings\-\Ðàáî÷èé ñòîë\Automatic\Quik Junior\TRANS2QUIK.dll" Alias "_TRANS2QUIK_IS_DLL_CONNECTED@12" (ByVal pnExtendedErrorCode As Long, _
    ByVal lpstrErrorMessage As String, ByVal dwErrorMessageSize As Long) As Long


Private Sub Form_Load()
    Dim lngLibHandle As Long
    Dim lngDllConnectionStatus As Long, lngExtendedErrorCode As Long, strErrorMessage As String, lngErrorMessageSize As Long
    
'    lngLibHandle = LoadLibrary("C:\Documents and Settings\-\Ðàáî÷èé ñòîë\Automatic\Quik Junior\TRANS2QUIK.dll")
    
'    MsgBox GetProcAddress(lngLibHandle, "_TRANS2QUIK_IS_DLL_CONNECTED@12")
    
    
'    FreeLibrary lngLibHandle
    
    
    
    
    lngDllConnectionStatus = TRANS2QUIK_IS_DLL_CONNECTED(lngExtendedErrorCode, strErrorMessage, lngErrorMessageSize)
'    TRANS2QUIK_CONNECT ee, "", er
    If lngDllConnectionStatus = TRANS2QUIK_DLL_NOT_CONNECTED Then
        Dim strPathToExe As String
        
        strPathToExe = "E:\FinamJunior"
        MsgBox TRANS2QUIK_CONNECT(strPathToExe, lngExtendedErrorCode, strErrorMessage, lngErrorMessageSize)
        
    End If
'    MsgBox lngDllConnectiomStatus
    
    End
End Sub 

Sergey Gorokhov
написал:
Приведите пример кода где вы объявляете функцию и где вызываете
 
У Вас как то не корреткно указано
Код
        MsgBox TRANS2QUIK_CONNECT(strPathToExe, lngExtendedErrorCode, strErrorMessage, lngErrorMessage Size )


Попробуйте как-то так:

Код
       
Dim pnExtendedErrorCode As Long
Dim lpstrErrorMessage As String * 250
Const dwErrorMessageSize = 250
    FunctionResult = TRANS2QUIK_CONNECT("E:\FinamJunior\", pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessageSize)
 
Цитата
Sergey Gorokhov написал:
У Вас как то не корреткно указано
Код
          MsgBox TRANS2QUIK_CONNECT(strPathToExe, lngExtendedErrorCode, strErrorMessage, lngErrorMessage  Size  )
  


Попробуйте как-то так:
Код
         
Dim pnExtendedErrorCode As Long
Dim lpstrErrorMessage As String  *   250 
Const dwErrorMessage Size   =   250 
    FunctionResult  =  TRANS2QUIK_CONNECT("E:\FinamJunior\", pnExtendedErrorCode, lpstrErrorMessage, dwErrorMessage Size )
  
Все, разобрался. Поменял в объявлении функции byval на byref, заработало. Извиняюсь за нелепую ошибку. Теперь возвращает 0, т.е. success. Спасибо за помощь.  
 
Добрый день. Возник такой концептуальный вопрос. Подключаю dll к квик, подключено. Проверяю подключение квика с Интернетом, подключено. Вроде все нормально. Далее, вызываю функцию subscribe_orders, затем start_orders(orders_status_callback). subscribe_orders возвращает успех. По start_orders не определить, успешно ли завершена функция, но завершена, управление возвращено в вызывающую процедуру. В orders_status_callback – тишина. Что за данные должны поступать в эту процедуру после start_orders? Данные котировок по инструментам? Почему-то ничего нет, но в графике цена – объем в самом квике идет обновление данных по поводу торгов. Кок сделать так, что trans2quik.dll получала эти данные, которые обновляются в квике, как написано чуть выше. Пример с sample_excel тоже не дал это информации.
 
Цитата
С помощью функции TRANS2QUIK_SUBSCRIBE_ORDERS можно получить информацию о собственных заявках, из таблицы заявок.
Для запуска процесса получения информации по заявкам нужно также вызвать функцию TRANS2QUIK_START_ORDERS.
Вот ответ на мой вопрос. Может кому-то поможет.
Страницы: 1
Читают тему
Наверх