Форум » [x]Harbour » Как сделать обработку ошибок для чужой С-ной библиотеки ? » Ответить

Как сделать обработку ошибок для чужой С-ной библиотеки ?

Andrey: Всем привет ! Столкнулся с проблемой. Программа на хХарборе 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 ) - на этой строчке и вываливается, т.е. не может к ключу присоединиться ! Сама функция здесь: [more]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 ) [/more]

Ответов - 4

Andrey: В догонку, тестирровал на других компьютерах работает. Понял закономерность на ХР работает, на 2003 - нет. Но на 2003 - пробовал пока только на одном компьютере.... Чем ХР отличается от 2003 для хХарбора ?

Pasha: Прежде всего надо убедиться, что нет ошибок в функции c_hasp_hl_login. Это, судя по всему, wrapper к функции из библиотеки Текст функции в студию, плз И пару слов, что это за либа такая и в каком она виде дается: lib, dll

Andrey: Pasha пишет: Текст функции в студию, плз Так я наверху дал - в строке "Скрытый текст".... Библиотека называется libhasp_windows_bcc.lib, есть еще и под MS... Под ХР эта функция работает нормально, под Win2003 вылетает.... Но как то криво... Через раз... Вот и хотелось бы, чтоб не вылетало на этом вызове чужой библиотеки... Хотя бы сообщение выходило, типа "Не могу вызвать эту функцию" ...


Andrey: 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 )



полная версия страницы