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

Здравствуйте!
Приобрели комплект разработчика и ключи Sign. Отформатировал их как Hid.
У нас 2 программы на VB6 и VB2010, пробую открыть пример на vb6
Мне выдает ошибки(см. рис)
https://forum.guardant.ru/uploads/legacy/0/500/926/thumb/p16vncvvng1iqrbbiimkraq1i7a1.jpg
https://forum.guardant.ru/uploads/legacy/0/500/926/thumb/p16vnd16qdt7jtf41p4lsbgnk62.jpg
https://forum.guardant.ru/uploads/legacy/0/500/926/thumb/p16vnd3hk5tak1pnutcd1tt2ffo3.jpg
И проект не загружает. Я попытался сам собрать проект, но после выполнения всех функций он вылетает вместе со студией???

Пробую пример для VB2010(У вас он для Microsoft Visual Basic .NET 2005), я создаю консольное приложение, копирую туда весь текст вашего примера и получаю ошибку:
https://forum.guardant.ru/uploads/legacy/0/500/926/thumb/p16vnd9l68h4ji8r1s421u0r1d5j4.jpg

Подскажите что делать?
Возможно ли если что замена на 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

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

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

http://s2.uploads.ru/KGrXN.png

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

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

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

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

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

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