Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1052
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.10 04:04. Заголовок: Как сделать обработку ошибок для чужой С-ной библиотеки ?
Всем привет ! Столкнулся с проблемой. Программа на хХарборе 1.0.0 + BCC и терминалка GTWVT. Имею стандартную библиотеку HASP-HL под BCC. Написали мне функции для работы с ней. Но самая главная функция LOGIN на одном компе нормально работает, на другом вываливается без ошибок.... Была программа, окошко мигнуло и нет программы .... В отладчике по F8 дошел до места вываливания... Как бы у себя в коде ОБРАБОТАТЬ эту ошибку ? Там вызов стандартный: FUNCTION MyHaspCrypt( cSource, cTarget, lEncrypt ) LOCAL nStatus, nHandle, cErr // nHandle := nil nStatus := c_hasp_hl_login( @nHandle ) - на этой строчке и вываливается, т.е. не может к ключу присоединиться ! Сама функция здесь: Скрытый текст HB_FUNC( C_HASP_HL_LOGIN ) { // // Call: // C_HASP_HL_LOGIN ( @nHandle ) // Returns: // HASP_STATUS_OK, HASP_FEATURE_NOT_FOUND, HASP_HASP_NOT_FOUND, // HASP_STATUS_OK, HASP_FEATURE_NOT_FOUND, HASP_CONTAINER_NOT_FOUND, // HASP_OLD_DRIVER, HASP_NO_DRIVER, HASP_INV_VCODE, // HASP_FEATURE_TYPE_NOT_IMPL, HASP_TMOF, HASP_TS_DETECTED // #if defined(IGNORE_TERMINAL_SERVICES) const hasp_feature_t feature = HASP_PROGNUM_DEFAULT_FID | HASP_PROGNUM_OPT_TS; #else const hasp_feature_t feature = HASP_PROGNUM_DEFAULT_FID; #endif // hasp_handle_t handle = HASP_INVALID_HANDLE_VALUE; // hasp_status_t status = hasp_login( feature, vendor_code, &handle ); // hb_stornl( handle, 1 ); hb_retnl( status ); // } // HB_FUNC( C_HASP_HL_LOGIN )
|
|
|
|
Ответов - 4
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1053
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.10 16:47. Заголовок: В догонку, тестирров..
В догонку, тестирровал на других компьютерах работает. Понял закономерность на ХР работает, на 2003 - нет. Но на 2003 - пробовал пока только на одном компьютере.... Чем ХР отличается от 2003 для хХарбора ?
|
|
|
|
| Администратор
|
Пост N: 1289
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.01.10 17:25. Заголовок: Прежде всего надо уб..
Прежде всего надо убедиться, что нет ошибок в функции c_hasp_hl_login. Это, судя по всему, wrapper к функции из библиотеки Текст функции в студию, плз И пару слов, что это за либа такая и в каком она виде дается: lib, dll
|
|
|
|
| постоянный участник
|
Пост N: 1054
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.01.10 20:01. Заголовок: Pasha пишет: Текст ..
Pasha пишет: цитата: | Текст функции в студию, плз |
| Так я наверху дал - в строке "Скрытый текст".... Библиотека называется libhasp_windows_bcc.lib, есть еще и под MS... Под ХР эта функция работает нормально, под Win2003 вылетает.... Но как то криво... Через раз... Вот и хотелось бы, чтоб не вылетало на этом вызове чужой библиотеки... Хотя бы сообщение выходило, типа "Не могу вызвать эту функцию" ...
|
|
|
|
| постоянный участник
|
Пост N: 1062
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.01.10 22:53. Заголовок: Pasha пишет: Текст ..
Pasha пишет: цитата: | Текст функции в студию, плз |
| Вот текст: HB_FUNC( C_HASP_HL_LOGIN ) { // // Call: // C_HASP_HL_LOGIN ( @nHandle ) // Returns: // HASP_STATUS_OK, HASP_FEATURE_NOT_FOUND, HASP_HASP_NOT_FOUND, // HASP_STATUS_OK, HASP_FEATURE_NOT_FOUND, HASP_CONTAINER_NOT_FOUND, // HASP_OLD_DRIVER, HASP_NO_DRIVER, HASP_INV_VCODE, // HASP_FEATURE_TYPE_NOT_IMPL, HASP_TMOF, HASP_TS_DETECTED // #if defined(IGNORE_TERMINAL_SERVICES) const hasp_feature_t feature = HASP_PROGNUM_DEFAULT_FID | HASP_PROGNUM_OPT_TS; #else const hasp_feature_t feature = HASP_PROGNUM_DEFAULT_FID; #endif // hasp_handle_t handle = HASP_INVALID_HANDLE_VALUE; // hasp_status_t status = hasp_login( feature, vendor_code, &handle ); // hb_stornl( handle, 1 ); hb_retnl( status ); // } // HB_FUNC( C_HASP_HL_LOGIN )
|
|
|
|