|  09.04.2003, 18:46 | #1 | 
| Участник |  Binary -> Container 
			
			Коллеги, не поможете с проблемкой? - хочу запихать класс Binary в Container. Задача в следующем - внешняя DLL возвращает бинарные данные в классе Binary. Необходимо запихнуть эти данные в таблицу. Кроме как в поле типа Container такие данные, вроде как, не пихнешь. Казалось бы пихни Binary в Container и задача решена, а вот как это сделать? | 
|  | 
|  09.04.2003, 18:52 | #2 | 
| NavAx | 
				__________________ С уважением, Игорь Ласийчук. | 
|  | 
|  09.04.2003, 19:02 | #3 | 
| Участник | К сожалению.... 
			
			К сожалению не поможет, так как там используется класс BinData. Он, несмотря на похожее название, никак не пересекается с классом Binary. | 
|  | 
|  09.08.2006, 17:49 | #4 | 
| Участник | 
			
			Я столкнулся с такой же проблемой. Только хочу наоборот container преобразовать в Binary. Работает в таком виде: PHP код: 
			Может у кого-нибудь есть идеи? Последний раз редактировалось PMS; 09.08.2006 в 18:13. | 
|  | 
|  09.08.2006, 17:59 | #5 | 
| Участник | 
			
			Да, кстати, копирование через строку PHP код: 
			 | 
|  | 
|  10.08.2006, 08:46 | #6 | 
| Участник | 
			
			Во-первых, самый простой способ ускорить вашу процедуру X++: Binary con2Binary(container _c) { BinData bd = new BinData(); Binary b; int i; int num; Array SafeArray; ; bd.setData(_c); //тут уже заранее заполненный контейнер _c SafeArray = bd.getVariant().safeArray(); num = SafeArray.lastIndex(); b = new Binary(num+1); for(i=1; i<(num+1); i++) b.byte(i-1, SafeArray.value(i)); return b; } X++: str s; ; s = BinData::dataToString(_c); // в результате в s - строка, представляющая в шестнадцатиричном виде // данные контейнера (071d и т.д.) с разделителями между строками \n // В цикле пробегаете по строке, преобразовываете двойки в числа hex2int() // и сохраняете в Binary 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | |
| За это сообщение автора поблагодарили: Corel (1). | |
|  10.08.2006, 10:51 | #7 | 
| Участник | 
			
			AndyD, спасибо. Способ "Во-первых" действительно ускорил работу с 10 секунд до практически мгновенно (глазом не заметно). Способ "Во-вторых" тоже хороший. Цитата: 
		
			Сообщение от AndyD ... а зачем вам именно контейнер засовывать в Binary? Не проще ли данные вставлять непосредственно в него? Меня все-таки удивляет вот что. Есть класс Binary и есть класс BinData. Вроде бы одно и тоже, но похоже, что прямого пути передачи данных между объектами этих классов нет... | 
|  | 
|  10.08.2006, 10:56 | #8 | 
| Участник | 
			
			Дело в том, что при сохранении в BinData к самим данным дополнительно добавляется служебная информация - идентификатор контейнера, типы данных, размеры контенера и т.д. Не припомню в WinApi функций, которые бы понимали эти данные.
		 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  10.08.2006, 11:41 | #9 | 
| Участник | Цитата: 
		
			Сообщение от AndyD
			
			 Дело в том, что при сохранении в BinData к самим данным дополнительно добавляется служебная информация - идентификатор контейнера, типы данных, размеры контенера и т.д. Не припомню в WinApi функций, которые бы понимали эти данные. В BinData служебная информация в сами данные не добавляется. Во всяком случае, при побайтовом копировании они не вылезают. Последний раз редактировалось PMS; 10.08.2006 в 11:44. | 
|  | 
|  10.08.2006, 11:58 | #10 | 
| Участник | 
			
			Может я чего-то пропустил, но что такое "заранее заполненный контейнер _c"? Как вы его получаете? 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  10.08.2006, 12:06 | #11 | 
| Участник | 
			
			Я имел ввиду, что контейнер передается в метод из поля таблицы, а загружается он туда (в таблицу) из файла.
		 Последний раз редактировалось PMS; 10.08.2006 в 12:11. | 
|  | 
|  10.08.2006, 12:43 | #12 | 
| Участник | 
			
			А файл. Тогда прокатит. Я думал, что речь идет об обычном контейнере с произвольным количеством элементов. 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  10.08.2006, 13:08 | #13 | 
| Участник | 
			
			Да, да, конечно, я забыл сказать, что в контейнере лежит один объект - файл.
		 | 
|  | 
|  24.04.2014, 15:22 | #14 | 
| Участник | 
			
			удалось решить? я пока вижу выход только через биндата сохранить в файл а после через winapi влить обратно в binary- но нужно искать более быстрый способ
		 | 
|  | 
|  24.04.2014, 15:51 | #15 | 
| Участник | 
			
			А вот это не то? X++: BinData.setBinaryData(Binary); | 
|  | 
|  26.04.2014, 16:29 | #16 | 
| Участник | 
			
			так set вроде как вносит данные или я не прав и она может не только вносить но и выводить? попробую конечно, но чет не верится
		 | 
|  | 
|  28.04.2014, 10:59 | #17 | 
| Участник | 
			
			как и говорил set не катит, но катит base64
		 | 
|  | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| container -> image | 9 | |||
| gatesasbait: Quicksort on a container | 1 | |||
| axaptapedia: Container | 0 | |||
| Dynamics AX Geek: Storing objects in a container | 0 | |||
| Binary in Axapta | 6 | |||
| 
 |