powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jcobe и railtarif
25 сообщений из 38, страница 1 из 2
jcobe и railtarif
    #39134210
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim TrfApp As IApplication2
Dim TrfDoc As Document
 
Set TrfApp = CreateObject("TariffX.Application")
TrfApp.Initialize ""
Set TrfDoc = TrfApp.CreateDocument
 
TrfDoc.Data.Value("LandTrf\Distance\ActualValue") = 1




В VBA пишу так, а как переписать на jcob не могу понять!!!
Как переписать эту строку : TrfDoc.Data.Value("LandTrf\Distance\ActualValue") = 1
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134267
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Кто нибудь ответит? А то мне влом Jacob вспоминать ))) /лет 10 назад его смотрел))) /

2. Madeok.ru, приведи тот кусок Java кода, который у тебя уже получился.
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134283
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Да, всё там через Dispatch.put/call/get делается. Автор даже jacob с двух попыток не может правильно написать. Что уж про код говорить?
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134295
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. Madeok.ru, как Data.Value описано в документации? Что это, свойство или метод

Скачал Jacob посмотрел описание com.Dispatch нужных методов не нашел - т.ч. мне "с ходу" на данную проблему не ответить, нужно лезть в C-код + читать MSDN. Не верится, что достаточно стандартные вызовы (во всю используются в Excel,Word'е) в Jacob'е до сих пор не реализованы.... но я уже ничему в этой жизни не удивляюсь....

Ну и не понятно, как Data.Value объявлено в библиотеке типов. Хорошо бы еще иметь документацию и проверить по библиотеке типов (вспомнить бы еще,как это делается))) ). Т.к. документации, например от M$, любят врать. Для VB без разницы - свойство или метод (VB сам смотрит в библиотеку типов), а для при вызови через Windows API - это важно.

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

Data и Value - это свойства.
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134306
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДа, всё там через Dispatch.put/call/get делается

Посмотрел в доку, увидел фигу - не вижу нужного put (((

Какой из put'ов нужно использовать в com.jacob.com.Dispatch, что бы корректно обработалось Data.Value("параметр") = "значение" - лично мне тоже не понятно

BlazkowiczАвтор даже jacob с двух попыток не может правильно написать.
У меня тоже кол-во опечаток иногда зашкаливает. Вошел, ответил не глядя, прочитал через 30 мин - ужаснулся ))).
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134319
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ruLeonid Kudryavtsev,
Data и Value - это свойства.
1) Мало информации, лучше под тэг spool весь кусок доки от поставщика привести. Не думаю, что там сильно много коммерческой информации. Если лучше, кусок из type library

Что возвращают:

Data понятно, какой-то объект IDispatch
А что возвращает Value: Variant или IDispatch, что ему присваивается?

2) Насколько проблема для Вас критична?
Смотрю в Java Doc по JACOB - вижу фигу. Вполне возможно, что нужно дописывать Jacob (благо сорцы есть).
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134357
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Код: java
1.
2.
Dispatch data = Dispatch.get(document, "Data").getDispatch();
Variant result = Dispatch.call(data, "Value", "LandTrf\Distance\ActualValue");
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134414
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Это то понятно, этим мы получим значение в
Код: vbnet
1.
LandTrf\Distance\ActualValue


а вот как вот установить значение для этого свойства???

result=1 не вариант!!!
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134432
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru,

Вы бы свой код на Java привели, вместо восклицательных знаков. Да, на вопросы бы поотвечали.

Так пробовали?

Код: java
1.
2.
Dispatch.put(data, "Value", "LandTrf\Distance\ActualValue", 1);
Dispatch.put(data, "Value", "LandTrf\Distance\ActualValue", new Variant(1));
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134487
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

у
Код: java
1.
put

только три параметра!!!
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134512
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ruтолько три параметра!!!
Значит попробуйте callN!!! Научитесь смотреть исходники!!!
http://grepcode.com/file/repo1.maven.org/maven2/net.sf.jacob-project/jacob/1.14.3/com/jacob/com/Dispatch.java#Dispatch.put(com.jacob.com.Dispatch,java.lang.String,java.lang.Object)
В Java без этого НИКАК!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134513
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример в спецификации для VBA:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim Doc As RailTariff.Document
Doc = CreateDocument()
' Установка даты расчета
Dim Calc_Date As Date = "2007-12-12"
Doc.OnDate(Calc_Date)
' Установка параметров расчета
Doc.FromStation("930907", 0)
Doc.ToStation("930907", 0)
Doc.Send(1000, 2, 0, 2)
Doc.FreightEx("014003", "", "10030010", 60)
Doc.Wagon(21, 1, 1)
Doc.WagonOwnerLand(27, False)
Doc.DoCalcDistance()
' Страна у нас одна, поэтому просто переходим на первую строку
Doc.Result.AsTable.First()
' Данные через Result доступны только на чтение, поэтому используем Data (LandTrf – узел, на который ссылается Result)
Doc.Data.Value("LandTrf\Distance")=2
' Блокируем автоматическое изменение поля с расстоянием
Doc.Data.Value("LandTrf\Distance\ActualValue")=1
' Расчет тарифа
Doc.DoCalcTariff



меня интересует как переписать строки:
Код: vbnet
1.
2.
3.
4.
' Данные через Result доступны только на чтение, поэтому используем Data (LandTrf – узел, на который ссылается Result)
Doc.Data.Value("LandTrf\Distance")=2
' Блокируем автоматическое изменение поля с расстоянием
Doc.Data.Value("LandTrf\Distance\ActualValue")=1
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134520
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru,

Вас спрашивают че вернет такой код
Код: java
1.
2.
Dispatch data = Dispatch.get(document, "Data").getDispatch();
чё = Dispatch.get(data, "Value");



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

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

	at com.jacob.com.Dispatch.invokev(Native Method)
	at com.jacob.com.Dispatch.invokev(Dispatch.java:858)
	at com.jacob.com.Dispatch.get(Dispatch.java:1258)
	at main.Program.main(Program.java:29)
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134532
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
		ActiveXComponent rt = new ActiveXComponent("TariffX.Application");
		Dispatch.call(rt, "Initialize","");
		Dispatch doc = Dispatch.call(rt,"CreateDocument").toDispatch();
		Dispatch.call(doc,"OnDate",new Date());
		Dispatch.call(doc,"fromStation","770005",0);
		Dispatch.call(doc,"toStation","770005",0);
		Dispatch.call(doc,"Send", 1000, 1, 0, 2);
		Dispatch.call(doc,"freightEx", 236038, "", "", 63);
		Dispatch.call(doc,"Wagon", 3, 1, 1, 63);
		Dispatch.call(doc,"WagonOwnerLand", 27, false);
		Dispatch.call(doc,"DoCalcDistance");
		Dispatch result = Dispatch.get(doc,"result").toDispatch();
		Dispatch asTable = Dispatch.get(result,"AsTable").toDispatch();
		Dispatch.call(asTable,"First");


а вот java
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134552
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Value
Description: Недопустимое число параметров.

	at com.jacob.com.Dispatch.invokev(Native Method)
	at com.jacob.com.Dispatch.invokev(Dispatch.java:858)
	at com.jacob.com.Dispatch.get(Dispatch.java:1258)
	at main.Program.main(Program.java:29)



О, наметился конструктивный диалог. Так что там с Dispatch.get(data, "Value");?
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134567
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

яж написал, появляется эксептион!
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134605
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ruяж написал, появляется эксептион!
Ах, это на get.. Как на счет
Код: java
1.
Dispatch.callN(data, "Value", "LandTrf\Distance\ActualValue");
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134671
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

так не прокатывает:
Код: java
1.
2.
Dispatch.callN(data, "Value", "LandTrf\Distance\ActualValue");
The method callN(Dispatch, String, Object[]) in the type Dispatch is not applicable for the arguments (Dispatch, String, String)



а вот так:
компилиться и запускаеться:
Код: java
1.
Dispatch.callN(data, "Value", new Object[] {"LandTrf\\Distance\\ActualValue"});



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

Версия Jacob, видать, старая. В актуальной версии там давно уже vararg, а не Object[]

Код: java
1.
2.
Dispatch actualValue = Dispatch.callN(data, "Value", new Object[] {"LandTrf\\Distance\\ActualValue"}).toDispatch();
Dispatch.put(actualValue, 1);
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134769
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да, библиотека была старенькая. Обновил.
Но строки не работают. вываливается эксепнион

Код: java
1.
2.
3.
[SRC JS]Dispatch actualValue = Dispatch.callN(data, "Value", new Object[] {"LandTrf\\Distance\\ActualValue"}).toDispatch();

Dispatch actualValue = Dispatch.callN(data, "Value", "LandTrf\\Distance\\ActualValue").toDispatch();

[/SRC]

Код: java
1.
2.
3.
4.
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:31)
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134777
madeok.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

и если так:
Код: java
1.
2.
3.
4.
5.
Dispatch actualValue = Dispatch.callN(data, "Value", "LandTrf\\Distance\\ActualValue").getDispatch();

Exception in thread "main" java.lang.IllegalStateException: getDispatch() only legal on Variants of type VariantDispatch, not 3
	at com.jacob.com.Variant.getDispatch(Variant.java:501)
	at main.Program.main(Program.java:31)
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134819
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда

Код: java
1.
Variant actualValue = Dispatch.callN(data, "Value", "LandTrf\\Distance\\ActualValue");


и посмотреть в дебаге какого там типа Variant и что у него внутри.
...
Рейтинг: 0 / 0
jcobe и railtarif
    #39134825
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madeok.ru,

Если там вдруг Int окажется, тогда как на счет

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


?
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / jcobe и railtarif
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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