powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jcobe и railtarif
13 сообщений из 38, страница 2 из 2
jcobe и railtarif
    #39134861
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

1) Вы меня конечно извините, но как в дебаге посмотреть тип варианта?
2)
Код: java
1.
Dispatch.call(data, "Value", "LandTrf\Distance\ActualValue", new Variant(1));


не работает
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134887
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru1) Вы меня конечно извините, но как в дебаге посмотреть тип варианта?

Поставить breakpoint. Посмотреть содержимое переменной actualValue со всех сторон.

madeok.ru2)
Код: java
1.
Dispatch.call(data, "Value", "LandTrf\Distance\ActualValue", new Variant(1));


не работает
Что пишет?
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134900
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

1) Вот такой эксепшен:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Value
Description: 8002000e / Недопустимое число параметров.

	at com.jacob.com.Dispatch.invokev(Native Method)
	at com.jacob.com.Dispatch.invokev(Dispatch.java:625)
	at com.jacob.com.Dispatch.callN(Dispatch.java:453)
	at com.jacob.com.Dispatch.call(Dispatch.java:541)
	at main.Program.main(Program.java:30)


2)Дебаг: в картинке
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134917
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru1) Вы меня конечно извините, но как в дебаге посмотреть тип варианта?

actualValue.getvt() что пишет?
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135007
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел в C-код, похоже, что C-ный код такое делать вполне умеет, а вот в Java необходимые ф-ции не нарезали. Но автор молодец. Наш человек!!! Ничего private объявлять не стал, весь интерфейс public и доступен извне класса.

Т.ч. IMHO можно обойтись "малой кровью", попытаться сделать свой костыль через прямой вызов ф-ции invokev или invokeSubv

IMHO & AFAIK
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135477
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

actualValue.getvt() возвращает 3
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135487
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru,

Очень странно. 3 это VariantInt. Но он у нас не в виде значения, а в виде ссылки. Возможно, Леонид и прав. Сначала надо вручную через invoke попробовать записать. Если не выйдет, тогда уже нативный код ковырять. Не могу найти примеров как в структуру такую писать.
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135526
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevТ.ч. IMHO можно обойтись "малой кровью", попытаться сделать свой костыль через прямой вызов ф-ции invokev или invokeSubv
IMHO & AFAIK

Это как малой кровью!?)

Код: java
1.
2.
3.
4.
5.
6.
Dispatch.invokev(data, "Value", Dispatch.Get, new Variant[] {new Variant("LandTrf\\Distance")}, new int[] {100}).toDispatch();
---
Exception in thread "main" com.jacob.com.ComFailException: VariantChangeType failed
	at com.jacob.com.Variant.toVariantDispatch(Native Method)
	at com.jacob.com.Variant.toDispatch(Variant.java:2003)
	at main.Program.main(Program.java:30)
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135531
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Код: java
1.
Dispatch.invokev(data, "Value", Dispatch.Put, new Variant[] {new Variant("LandTrf\\Distance"), new Variant(100)}, new int[] {100});




Получилооооооооооооооооооооооооось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вот так работает)
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135534
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
madeok.ruBlazkowicz,

Код: java
1.
Dispatch.invokev(data, "Value", Dispatch.Put, new Variant[] {new Variant("LandTrf\\Distance"), new Variant(100)}, new int[] {100});




Получилооооооооооооооооооооооооось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вот так работает)

Код: java
1.
Dispatch.Put

- ставим такой ключ и ок
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135551
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрестить метод call + put.

Т.е. нам нужно вызвать Invoke с Dispatch.Put (в 3-ем параметре, как в put) и передать туда параметры (как в call)

Но не очень понятно, сможет ли это сгрысть макрос SETDISPPARAMS в C-ном коде. В общем, нужно вдумчиво читать MSDN для cNamedArgs, rgdispidNamedArgs. Если все параметры нужно делать именованными, то тогда нужно Jacob дописывать (((
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39135596
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и в любом случае, хорошо бы видеть корректное описания свойства/метода Value

Какой параметр он принимает (как называется, есть ли clsid у параметра), какой тип, какой тип возвращает. Информация должна быть в Type Library

Сейчас у меня ни MS Visual Studio (что бы JACOB скомпилить), ни MS Office (что бы тест кейс сделать и хоть на Excel'е проверить) нет. Ни халявного И-нета, что бы скачать через торрент.
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39139533
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще актуально ?
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / jcobe и railtarif
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]