|
v8: Образец внешней компоненты Native API для 8.2 (Infostart) | ☑ | ||
---|---|---|---|---|
0
romix
31.07.11
✎
13:39
|
С июльского ИТС скачал папку VNCOMP82 - какой версией VS компилить, не совсем понятно. :-) У кого есть Дельфийский образчик (от Кирпича или другой) положите пож. на стабильный хостинг типа Народ.ру (или пришлите мне я положу), а то в v8: ВК NativeAPI и Delphi похоже время истекло.
|
|||
1
Кирпич
01.08.11
✎
10:09
|
Ищи на инфостарте
|
|||
2
romix
01.08.11
✎
10:48
|
(1) А нашел спасибо http://infostart.ru/public/81644/ сейчас заценю.
Кстати штатная с ИТС не скомпилилась VS 2005 (говорит не та версия), качнул 2010 тоже чего то оно сначала конвертит, а потом ругается на нехватку файла. Стало быть методом исключения - для компиляции примера от 1С был нужен VS 2008. |
|||
3
romix
01.08.11
✎
13:07
|
Пока не сообразил как там отобразить исключение (AddError?) - сделал сообщением и возвратом False.
|
|||
4
Кирпич
01.08.11
✎
13:33
|
V8.AddError наверное. я не помню уже.
|
|||
5
romix
01.08.11
✎
13:37
|
(4) Я там сделал вот так:
function _CallAsFunc(Obj: PV8ObjectRec; const lMethodNum: integer; pvarRetValue, paParams: PV8Variant; const lSizeArray: integer): boolean; stdcall; begin try result := _V8CF(Obj.RelObj1.ClassReg.MethList[lMethodNum].Execute) (Obj.RelObj1, pvarRetValue, PV8ParamArray(paParams), lSizeArray); except on e: Exception do begin ShowBalloon(e.message, 'Ошибка внешней компоненты', 3000); result := false; end; end; end; ShowBalloon показывает желтое всплывающее сообщение в трее. Как там подсоединить V8 пока непонятно. |
|||
6
romix
01.08.11
✎
13:43
|
Кажется так Obj.RelObj1.V8.addError();
|
|||
7
romix
01.08.11
✎
13:53
|
Obj.RelObj1.V8.addError(1006, 'Внешняя компонента', pWideChar(err), E_FAIL);
(выводит сообщение с восклицательным знаком). |
|||
8
Кирпич
01.08.11
✎
14:09
|
Ну задумывалось, что обработку ошибок будут делать в реализации методов.
Там просто писать V8.addError(1006, 'Внешняя компонента', pWideChar(err), E_FAIL); |
|||
9
romix
01.08.11
✎
14:12
|
(8) Неа, там я просто выбрасываю исключение, а обработка в CallAsFunc. Иначе исключение 1С обрушивает... Вот так вроде нормально всё:
|
|||
10
Кирпич
01.08.11
✎
14:40
|
Ну я и говорю что эти все try except должны быть в реализации метода. Ну если так хочется, то ради бога.
|
|||
11
romix
01.08.11
✎
17:50
|
Сделал компоненту, которая была нужна, с системными фенечками (запуск процесса, переключение клавиатуры и др.) - думаю, многим пригодится http://infostart.ru/public/88060/ Еще раз спасибо за помощь.
|
|||
12
romix
02.08.11
✎
13:40
|
Что-то не удается вызвать событие
ExternalEvent(wszSource, wszMessage, wszData); |
|||
13
Кирпич
02.08.11
✎
15:46
|
Методом тыка добился следующего
если пишешь вот такое V8.ExternalEvent('Hello','From','Delphi'); V8.AddError(1007, 'Внешняя компонента','ошибочка вышла', 0); result := true; то работает. и в модуле управляемого приложения Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Сообщить(Источник); Сообщить(Событие); Сообщить(Данные); КонецПроцедуры фигня какая то. |
|||
14
Кирпич
02.08.11
✎
15:53
|
Или так
ОбъектВК.ВызватьВнешнеееСобытие(); Предупреждение("ла ла да"); |
|||
15
romix
03.08.11
✎
15:12
|
(14) Я вот так сделал:
Действительно без Предупреждение оно чего-то не отрабатывает. Штрихкоды оно так же будет читать, что ли. :-) |
|||
17
romix
04.08.11
✎
15:02
|
Может там переменная при выходе из функции уничтожается...1
|
|||
18
Кирпич
08.08.11
✎
16:01
|
(17) Видимо да. Загрузил ВК в модуле приложения. Все заработало.
Перем ОбъектВК экспорт; Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные) Сообщить(Источник); Сообщить(Событие); Сообщить(Данные); КонецПроцедуры Процедура ПриНачалеРаботыСистемы() ПодключитьВнешнююКомпоненту("C:\temp\LNAPI\units\test1CNativeLib\sample\demo.dll","DemoLib",AddInType.Native); ОбъектВК = Новый("AddIn.DemoLib.ВторойКласс"); КонецПроцедуры |
|||
19
romix
08.08.11
✎
16:58
|
(18) И у меня тоже так получилось.
Почему-то я думал что глобальные переменные (в гл. модуле) они убрали. |
|||
20
H A D G E H O G s
08.08.11
✎
17:13
|
Я тут был.
|
|||
21
romix
08.08.11
✎
17:15
|
Сейчас выложу на инфостарт что получилось.
|
|||
22
romix
08.08.11
✎
21:02
|
Положил новую версию с событиями: http://infostart.ru/public/88060/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |