#0
by ProgAL
Добрый день. Есть внешняя компонента на с++ builder. Все что нужно работает нормально. Использование метода AddError интерфейса IErrorLog вызывает утечки памяти. Поэтому хочется вызывать стандартную функцию Сообщить. Как это сделать, если в наличии есть указатель, получаемый в функции Init. Тип указателя IDispatch* .
#1
by H A D G E H O G s
1) Сохранить указатель в переменную pconnect:IDispatch; 2) При первом callasfunc получить свойство appdispatch этого указателя. delphi, например, сделает invoke за вас вооот так appdispatch:=OleVariant(pconnect).appdispatch; и сохранить в какую - то переменную типа OleVariant; 3) Когда надо вызывать все что угодно через appdispatch, например appdispatch.Сообщить appdispatch.NewObject('СписокЗначений') и хранить в переменных класса OleVariant (Для Дельфи конечно). Если прозрачная обертка с OleVariant не поддерживается вашими псевдоязыками - писать обертки над GetIDsOfName, Invoke и.т.д. Пример обертки можно взять в Дельфи, хехехе.
#3
by ProgAL
Сделал 5000 вызовов вывода строки длиной 50 символов подряд. Увидел прирост памяти в диспетечере задач. После закрытия окна сообщений она особо не уменьшилась. Каждый последующий вывод приводит к увеличению памяти, занимаемой процессом 1с. Спасибо что Вы появились и ответили. appdispatch я получаю успешно и многое работает, например, Но вот когда я пытаюсь выполнить команду языка 1С "Выполнить" Variant(pAppDispatch).OleFunction("Execute", TextCommamd); вылезает "функция не найдена". Пробовал и "Message" вместо "Execute".
#6
by ProgAL
Спасибо. Так уже что-то шевелится. Застрял на несоответствии типов. А все же другого способа нету, чтобы не менять текст конфигурации.
#10
by ProgAL
Нет, я уже про это писал и ОлеФункшн и ОлеПроцедуре, и анлийское название Сообщить Message не работают.
#12
by ProgAL
Это я уже нагуглил давно. В 8-ке такого нет. И примера на ИТС ни одного нет. Даже на Делфи примера нет.
#14
by ProgAL
Теперь и у меня работает в 2 вариантах OleProcedure и OleFunction. Чудеса. Всем спасибо.
#15
by ProgAL
Variant(pAppDispatch).OleFunction("Execute", TextCommamd); ошибка была во втором параметре, в ошибочном случае AnsiString, а в правильном char*. Извините, кто зря потратил время. Спасибо.
#16
by H A D G E H O G s
Вы всегда старадали, страдаете и будете страдать со строками, c++ ники. Это вам кара за экзогенный, негуманноидный язык.
#19
by ProgAL
Кстати, память жрется. Субъективно меньше - 2 Мбт на 5000 сообщить, а через AddError было 3,5 - 4 Мбт. Но просто текст на штатном языке Для Ы = 1 По 5000 Цикл тоже жрет примерно в таком же размере как получилось сейчас.
#20
by DmitrO
Через IDispatch приложения доступны только функции глобального контекста. Вычислить - встроенная функция; поэтому их и нельзя вызвать.
#21
by H A D G E H O G s
Поставь eurecalog и прекрати страдать. 100500 что у тебя утечка в другом месте
#23
by H A D G E H O G s
правильно хранить число ссылок на строку ее длину завершать ее нулем (чтобы передавать в c++ winapi) давать указатель на переменную как указатель на начало области данных строки (опять таки для winapi) корректно преобразовывать ansistring <-> widestring Все это Дельфи делает само, автоматом, прозрачно из коробки настолько прекрасно, что остальное кажется кажется какахой мамонта.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как вызвать функцию внешней обработки?
- Доступ к табличной части внешней обработки из другой внешней обработки
- Подключенеи внешней компоненты. Ошибка "Ошибка при подключении внешней компоненты"
- Как вызвать функцию модуля обработки из формы внешней управляемой формы
- Подключение внешней компоненты из макета внешней обработки в толстом клиенте
- Подключение внешней компоненты во внешней обработке 1С 8.2
В этой группе 1С
- Количество записей регистра Хозрасчетный
- vbs. Как заставить ждать выполнение кода?
- Розница 2.1 как по умолчанию продавать пачками а не штуками?
- Помогите пожалуйста вылезает ошибка ожидается выражение "ВЫБРАТЬ"
- Мой пакет XDTO не появляется среди пакетов глобальной фабрики
- v7: сохранение таблицы в excel
- Отображение картинки при добавлении позиций в табличную часть
- Расчет доли в запросе (внешний отчет) не СКД.Возможно?
- Изменить показатели расчета зарплаты ЗУП 3.0
- Перенос логов базы при переносе сервера 1С
- Счет-фактура в БП 3.0
- Варианты отчета не отображаются
- Как заполнить тч в тз
- отчет на скд
- Корректировка приходного ордера
- Обмен через XDTO с мобильным приложением
- УТ 11. Сбрасывается расчет себестоимости
- 1С 8.3, локальный HASP и RDP
- Начальные остатки по земельным участкам УСН
- УТ 11.1 Статус указания серий