#0
by igor_kav
Для написания ВК использую NativeAPI (. Пару функций удалось сделать и использовать в 1С, но написал третью функцию в dll... при попытке использования в 1с именно этой третьей функции, 1с вылетает с ошибкой "Программа 1Сv8 не работает Возникшая проблема привела к прекращению работы программы. бла-бла". Самое интересное, что для тестирования создал проект VLC на delphi, поместил в него код функции. В VLC-проекте ФУНКЦИЯ РАБОТАЕТ! Поставил исключение в процедуре _CallAsFunc и получил ошибку: Внешняя компонента : Invalid pointer operation. Ошибка! {Форма.Форма.Форма}: Ошибка при вызове метода контекста (ПолучитьМоиДанные): Ошибка внешней компоненты Прочитал, что СКОРЕЕ ВСЕГО УТЕЧКА ПАМЯТИ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ STRING, но как решить ума не приложу... Кто сталкивался, ПОМОГИТЕ!
#1
by igor_kav
type function doLogin(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; function getMyData(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; function TMyClass.doLogin(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doQuerySysStatus(local_version, country_id, webapi_key, info, ver_key); (RIO as AllegroWebApiPortType).doLogin(user_login, user_password, country_id, webapi_key, ver_key, session_handle_part, user_id, server_time); function TMyClass.getMyData(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doGetMyData(session_handle_part, user_data, invoice_data, company_extra_data, function TMyClass.getCatsList(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doGetCatsData(country_id, local_version, webapi_key, cats_list, ver_key, ver_str); begin end. [/code]
#2
by igor_kav
type function doLogin(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; function getMyData(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; function TMyClass.doLogin(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doQuerySysStatus(local_version, country_id, webapi_key, info, ver_key); (RIO as AllegroWebApiPortType).doLogin(user_login, user_password, country_id, webapi_key, ver_key, session_handle_part, user_id, server_time); function TMyClass.getMyData(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doGetMyData(session_handle_part, user_data, invoice_data, company_extra_data, function TMyClass.getCatsList(RetValue: PV8Variant; Params: PV8ParamArray; const ParamCount: integer): boolean; var (RIO as AllegroWebApiPortType).doGetCatsData(country_id, local_version, webapi_key, cats_list, ver_key, ver_str); begin end.
#3
by igor_kav
не могу нормально скопировать код ВК. вот ссылка на комментарии к NativeApi , там есть мой код ВК
#5
by igor_kav
Я смотрел Вашу работу, от туда и взял код на обработку исключения :), но увы, смог выявить только ошибку, а вот как ее исправить ума не приложу. Что можете посоветовать?
#6
by romix
Попробуйте ее как шаблон использовать - там больше функций, и я что-то исправлял (уже не помню что).
#7
by romix
Т.е. не меняя числа функций - а то может где-то чего-то забыли там изменить под новое число функций.
#8
by vmv
1С очень критичка к г-коду самопальных библиотек, ведь разработчики платформы далеко не глупы
#9
by igor_kav
Взял полностью Ваш переработанный модуль v8napi, то теперь 1С вываливаентся при вызове любой функции :(
#10
by igor_kav
Отладчиком выявил ошибку "External exception C000001D" в строке: (RIO as AllegroWebApiPortType).doGetMyData(session_handle_part, user_data, invoice_data, company_extra_data, company_second_address, pharmacy_data, alcohol_data, related_persons); Но только в DLL, в EXE все нормально работает. В чем же все-таки причина?
#11
by H A D G E H O G s
Фиг тя знает.. ЗначениеИзСтрокиВнутр - фиии, реальне пацаны юзают XDTO. У меня даже объекты для формирования строкого возврата Массива, СпискаЗначений и Структуры есть. Вот темка:
#14
by igor_kav
THTTPRIO использую для работы с веб-сервисом, одно непонятно почему в EXE работает, а вот в DLL ну НИКАК?
#15
by H A D G E H O G s
Попробуй тупо после try, Перед (RIO as AllegroWebApiPortType).doGetMyData(.... написать CoInitializeEx(nil, COINIT_MULTITHREADED);
#17
by romix
Вариант - взять работающую DLL и не меняя в ней число функций запустить в одной из них свою требуемую функцию. Тогда станет ясно в чем проблема - в коде обвязки или в коде функции. Или наоборот - заменить содержимое своей функции на что-то нейтральное типа sleep или MessageBox, и посмотреть а будет ли работать так. Если нет то неправильно написана обвязка, если да - то пошагово проверять свою функцию (например повтыкать везде MessageBox-ы для отладки, на каком споткнется там и ошибка.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Ctrl-Break на ноуте без клавиши Break
- СКД - стаж работы сторудника
- v7: Поделитесь актом сверки для конфигурации "Бухгалтерский учет для Украины"
- Объединение ячеек вышестоящей группировки при выводе отчета в СКД
- Как передать из формы документа при записи параметры в модуль объекта
- УФ. Как вызвать процедуру модуля объекта или менеджера
- Печать из терминала Server 2008 на матричный принтер
- WMS: Axelot. Кто-нибудь работал с ней (это управление складом, если что)?
- Обработчик события ПриИзменении у поля ввода у ячейки табличного поля
- v8: Пин-код базовой: 15 или 16 знаков?
- Регистратор.Дата и Период - в чем разница?
- v7: вылетает 1с 7.7
- Версионирование объектов системы в 1С 8.2
- v7: Как определить кодировку текста
- Долго запускается 1С в режиме конфигуратор
- БГУ
- v7: Выпуск продукции (разделка) - подстановка спецификации (1С 7.7 ПУБ)
- Вывод результата работы СКД в таблицу значений
- Диплом 1С 8.2: Графика, Интерфейс, Проектирование. Студентики..
- тестовый TCP сервер