Тема: Проблемы с примерами

Здравствуйте!
Приобрели комплект разработчика и ключи Sign. Отформатировал их как Hid.
У нас 2 программы на VB6 и VB2010, пробую открыть пример на vb6
Мне выдает ошибки(см. рис)



И проект не загружает. Я попытался сам собрать проект, но после выполнения всех функций он вылетает вместе со студией???

Пробую пример для VB2010(У вас он для Microsoft Visual Basic .NET 2005), я создаю консольное приложение, копирую туда весь текст вашего примера и получаю ошибку:

Подскажите что делать?
Возможно ли если что замена на Stealth2? Я раньше их использовал, все работало.

Re: Проблемы с примерами

Пожалуйста ответьте, приложения надо распространять, а здесь такие проблемы....

Re: Проблемы с примерами

Игорь пишет:

Пожалуйста ответьте, приложения надо распространять, а здесь такие проблемы....

Попробуйте использовать версию 6.0. В новой версии появился режим лицензирования GrdLM_PerProcess, возможно в .net-библиотеке/примере он пока не обновился. Мы обязательно разберемся с этой проблемой.

Re: Проблемы с примерами

с VS2010 я разобрался:
У вас в примере:
        If cmdArgs.Length <> 0 Then
            LMS = Int32.Parse(cmdArgs(1))
        Else
            LMS = -1
        End If

        ' All following Guardant API calls before next GrdCloseHandle()/GrdLogin() will use this dongle
        RetCode = GrdApi.GrdLogin(GrdHandle, LMS, GrdLM.PerStation)
        ErrorHandling(GrdHandle, RetCode)

Так вылетает с ошибкой, а если
LMC = 0
то все работает и в руководстве написано, что для локальных ключей этот параметр игнорируется.

Re: Проблемы с примерами

Здравствуйте.

Игорь пишет:

с VS2010 я разобрался:
У вас в примере:
        If cmdArgs.Length <> 0 Then
            LMS = Int32.Parse(cmdArgs(1))
        Else
            LMS = -1
        End If
        ' All following Guardant API calls before next GrdCloseHandle()/GrdLogin() will use this dongle
        RetCode = GrdApi.GrdLogin(GrdHandle, LMS, GrdLM.PerStation)
        ErrorHandling(GrdHandle, RetCode)
Так вылетает с ошибкой, а если
LMC = 0
то все работает и в руководстве написано, что для локальных ключей этот параметр игнорируется.

Указанные ошибки для примеров "Microsoft Visual Basic 6" и "Microsoft Visual Basic .NET 2005" действительно имеют место быть.
Поскольку востребованность этих сред разработки на сегодняшний день наблюдается не слишком высокая (по крайней мере, это наши наблюдения), то и примеры под них мы, к сожалению, вовремя не скорректировали для использования с актуальными версиями Guardant API.

Однако, для того чтобы заставить данные примеры работать с современным Guardant API достаточно внести в них незначительные изменения, а именно:

  • Чтобы собрать рабочий пример на Visual Basic 6 в самом примере нужно исправить следующее:

1) В файле "test32.bas" исправить:

------------------------------------------------------------------------
Sub printf(ByVal Data As String)

Form_MainFrm.Form1.SetFocus
Form_MainFrm.Form1 = Form_MainFrm.Form1 + Chr$(13) + Chr$(10) + Data

Form_MainFrm.Form1.SelLength = 0

End Sub

Sub printl(ByVal Data As String)

Form_MainFrm.Form1.SetFocus
Form_MainFrm.Form1 = Form_MainFrm.Form1 + " " + Data
Form_MainFrm.Form1.SelLength = 0

End Sub
------------------------------------НА----------------------------------
Sub printf(ByVal Data As String)

Form1.MainFrm.SetFocus
Form1.MainFrm.Text = Form1.MainFrm.Text + Chr$(13) + Chr$(10) + Data

Form1.MainFrm.SelLength = 0

End Sub

Sub printl(ByVal Data As String)

Form1.MainFrm.SetFocus
Form1.MainFrm.Text = Form1.MainFrm.Text + " " + Data
Form1.MainFrm.SelLength = 0

End Sub
---------------------------------------------------------------------------

2) В файле GrdVB32.bas, в первой строке изменить значение "Public Const GrdContainerSize& =" с &H2000 на &H4000.

  • Для примера Visual Basic .NET 2005 нужно внести следущие изменения в пример:

1) Изменить тип переменной LMS с "Dim LMS As Int32" на "Dim LMS As UInt32";
2) Изменить алгоритм выбора значений параметра LMS:
До:
--------------------------------------------
If cmdArgs.Length <> 0 Then
LMS = Int32.Parse(cmdArgs(1))
Else
LMS = -1
End If
--------------------------------------------
После:
If cmdArgs.Length <> 0 Then
LMS = UInt32.Parse(cmdArgs(1))
Else
LMS = UInt32.MaxValue '-1
End If

Отредактировано jangle (2013-02-14 00:40:31)

Re: Проблемы с примерами

Вообще примеры написаны отвратительно. С ключом Option Explicit ничего не компилируется, потому что не объявлены переменные и неизвестен их тип

'----------------------------------------------------------------------------------------------
'  Prints operation result and forces program termination on error
'  Input:  Error code.
'  return: Error code
'-----------------------------------------------------------------------------------------------
Function PrintResult(ByVal nErrorCode As Integer) As Integer

    Dim szErrorMsg(&H100) As Byte ' buffer for error string
     nRet = nErrorCode
    Dim strError As String

Какой тип у nRet ? Надо самому угадать?

    printf ("nSetting dongle search conditions : ")
    dwRemoteMode& = GrdFMR_Local&                          ' Local
    dwFlags& = 0                                          ' Check by bProg, bVer & dongle type flag
    byProg = 1                                             ' Check by specified program number
    dwID& = 0                                              ' This search mode is not used
    wSN = 1                                                ' This search mode is not used
    byVer = 0                                              ' Check by specified version
    wMask = 0                                              ' This search mode is not used
    wType = 0                                      ' Dongle that supports RTC algorithm
    dwModel& = GrdFMM_Total&                                ' Guardant Stealth III Sign/Time dongle
    dwInterface& = GrdFMI_ALL&                             ' of any interface

GrdFMM_Total&  - это что? Переменная, константа?  В коде примера это нечто больше нигде не встречается.

Попробовал сам продекларировать переменные, пример стал запускаться, но валится на вызове одного из методов.
После нажатия ОК, крашится Visual Studio

Отредактировано jangle (2013-02-14 01:05:06)

Re: Проблемы с примерами

Просьба выложить рабочий пример для VB6

- с Option Explicit в начале каждого модуля
- с декларированием всех переменных и констант

потому что есть сейчас, не работает

И нужен пример для VB 2005. Потому что он крашится при запуске. Все вышеописанные изменения в код внес.