11.10.2017, 11:54 | #1 |
Участник
|
ref Byte[] на Х++
Имеется функция в библиотеке, один из параметров которой описан как "ref Byte[] cert".
Нужно его передать и получить из него данные в АХ2009. Вызов через .Net пока не подходит. Нужно чисто на Х++. С out параметром проблем нет. Описываем его как Pointer передаем в него класс Binary. Но здесь ret и еще Byte[]. |
|
11.10.2017, 12:21 | #2 |
Участник
|
А в чём проблема - в том что Ref или что массив? Можно попробовать использовать массив, синтаксис такой:
System.Object[] parameters = new System.Object[100](); |
|
11.10.2017, 12:44 | #3 |
Участник
|
|
|
11.10.2017, 12:46 | #4 |
Участник
|
byref добавили только в 2012 придется, наверное, через reflection
|
|
11.10.2017, 12:58 | #5 |
Участник
|
Цитата:
Сообщение от belugin
byref добавили только в 2012
Цитата:
byref Keyword
Support for calling .NET Framework assemblies, those managed by the common language runtime (CLR), has been enhanced by the addition of the byref keyword. This enables you to write X++ code that calls a C# method that requires either an out or ref parameter. For more information, see How to: Use the byref Keyword for CLR Interop. Вот, там-же) Последний раз редактировалось dmn; 11.10.2017 в 13:04. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
11.10.2017, 13:16 | #6 |
Участник
|
Упс, перепутал версии, тогда прочитать еще вот это: How to: Use X++ Syntax for CLR Arrays и скомбинировать, должно сработать
|
|
11.10.2017, 14:41 | #7 |
Участник
|
Цитата:
Вот код X++: DLLFunction func = new DLLFunction(dll, 'EUGetFileSignerInfo'); Binary pCertInfoEx = new Binary(100); System.Byte[] cert = new System.Byte[100](); int ret; ; func.returns(ExtTypes::DWord); func.arg(ExtTypes::DWord, ExtTypes::String, ExtTypes::Pointer, ExtTypes::Byte); ret = func.call(_signIndex, _fileNameWithSign, pCertInfoEx, byref cert); |
|
11.10.2017, 14:58 | #8 |
Участник
|
Я вас не понял. System.Byte[] тут не при чем. Думал что это вызов функции .Net
Может поможет. Вот здесь пишут, если я правильно понял (не силен в украинском), что функция EUGetFileSignerInfo принимает 5 параметров. Вы 5 параметр PDWORD pdwCertifiacateLength потеряли. Не? |
|
|
За это сообщение автора поблагодарили: kia (1). |
11.10.2017, 15:36 | #9 |
Участник
|
А.. есть бинарная функция параметр которой на C# записывается как ref Byte[] (получается
то char * на C++) соответственно надо создать binary нужной длинны и передать. |
|
11.10.2017, 15:42 | #10 |
Участник
|
Цитата:
Сообщение от dmn
Может поможет. Вот здесь пишут, если я правильно понял (не силен в украинском), что функция EUGetFileSignerInfo принимает 5 параметров. Вы 5 параметр PDWORD pdwCertifiacateLength потеряли. Не?
Спасибо |
|
|
|