Jacob - как передать byref?
От: elmal  
Дата: 17.08.12 16:28
Оценка:
Есть метод:

HRESULT CreateSignedDocument(
[out] SAFEARRAY(unsigned char)* Result,
[out, retval] CHBSignerResultEnum* RetVal);

byref, да еще и тип экзотический. Как этот метод вызвать, никак не пойму. Гуглил довольно много, единственное что нашел — здесь. То есть проблемы такие же как у меня, ответа нет.

Вообще — SAFEARRAY(unsigned char) вроде получается передать как String. Но вот строку по ссылке уже проблематично.
Re: Jacob - как передать byref?
От: elmal  
Дата: 17.08.12 19:34
Оценка:
Здравствуйте, elmal, Вы писали:

E>Вообще — SAFEARRAY(unsigned char) вроде получается передать как String. Но вот строку по ссылке уже проблематично.

Нда. Документация просто супер — только эксперименты помогают.
        Variant[] variants = new Variant[1];
        byte[] buffer = new byte[10000];
        SafeArray safeArray = new SafeArray(Variant.VariantByte, 10000);

        safeArray.fromByteArray(buffer);
        //safeArray.toByteArray();
        variants[0] = new Variant(safeArray, true); 
        Variant res1 = ax.invoke("CreateSignedDocument", variants);

Вот таким образом получилось вызвать, чтоб никакого мата не было. Результат даже вернулся success. Одна проблема — buffer как был пустым, так пустым и остался, то есть то, ради чего все затевалось, не произошло, хоть и уже без ошибок. Гуглил — ничего хорошего не нашел, одна вопросы без ответов.
Re[2]: Jacob - как передать byref?
От: Аноним  
Дата: 11.12.12 08:48
Оценка:
Здравствуйте elmal,

E>byref, да еще и тип экзотический. Как этот метод вызвать, никак не пойму. Гуглил довольно много, единственное что нашел — здесь. То есть проблемы такие же как у меня, ответа нет.


Я тут недавно вновь раскопал свою проблему, про которую именно я на SourceForge писал. Мне там пару вариантов предложили, но, увы, решить проблему пока не удалось. Разумеется, я давно нашёл другие возможности, но мне до сих пор интересно, каково всё-таки правильное решение. Удалось ли Вам найти какой-нибудь новый подход с использованием Jacob?

С уважением, Павел.
jacob byref safearray
Re[3]: Jacob - как передать byref?
От: elmal  
Дата: 11.12.12 08:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я тут недавно вновь раскопал свою проблему, про которую именно я на SourceForge писал. Мне там пару вариантов предложили, но, увы, решить проблему пока не удалось. Разумеется, я давно нашёл другие возможности, но мне до сих пор интересно, каково всё-таки правильное решение. Удалось ли Вам найти какой-нибудь новый подход с использованием Jacob?

Угу, удалось. Небольшой модификацией исходного WSDL, как и всегда в этих случаях. Короче, бяка возникает, когда стоит nullable=true. Убрал это, и все прекрасно стало генерить.
Re[4]: Jacob - как передать byref?
От: Аноним  
Дата: 11.12.12 09:04
Оценка:
Здравствуйте, elmal, Вы писали:

Опаньки... пожалуйста поподробнее! Мой исходный текст примерно соответствует Вашему из первого письма с соответствующими результатами. Где там бяка?

E>Угу, удалось. Небольшой модификацией исходного WSDL, как и всегда в этих случаях. Короче, бяка возникает, когда стоит nullable=true. Убрал это, и все прекрасно стало генерить.
Re[5]: Jacob - как передать byref?
От: elmal  
Дата: 11.12.12 09:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Опаньки... пожалуйста поподробнее! Мой исходный текст примерно соответствует Вашему из первого письма с соответствующими результатами. Где там бяка?

Черт, увы, зря обнадежил, попутал проблему, так как несколько от этой уже далек. Нет, эту проблему решить не удалось, в результате отказался от работы через COM вообще, сделал альтернативным способом.
Re[6]: Jacob - как передать byref?
От: priakhine  
Дата: 11.12.12 09:45
Оценка:
Здравствуйте, elmal, Вы писали:

E>Черт, увы, зря обнадежил, попутал проблему, так как несколько от этой уже далек. Нет, эту проблему решить не удалось, в результате отказался от работы через COM вообще, сделал альтернативным способом.


А я-то уже начал удивляться Придётся и мне, видать, свою проблему опять до лучших времён закопать, благо, она не смертельная. Тем не менее, большое спасибо за отзыв.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.