| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Коллеги, не поможете с проблемкой? - хочу запихать класс Binary в Container. 
		
		
		
		
		
		
		
	Задача в следующем - внешняя DLL возвращает бинарные данные в классе Binary. Необходимо запихнуть эти данные в таблицу. Кроме как в поле типа Container такие данные, вроде как, не пихнешь. Казалось бы пихни Binary в Container и задача решена, а вот как это сделать?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			 
				__________________ 
		
		
		
		
	С уважением, Игорь Ласийчук.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			К сожалению....
			 
			
			К сожалению не поможет, так как там используется класс BinData. 
		
		
		
		
		
		
		
	Он, несмотря на похожее название, никак не пересекается с классом Binary.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я столкнулся с такой же проблемой. Только хочу наоборот container преобразовать в Binary. 
		
		
		
		
		
		
		
		
			Работает в таком виде: PHP код: 
	
			
	Может у кого-нибудь есть идеи? Последний раз редактировалось PMS; 09.08.2006 в 18:13.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, кстати, копирование через строку 
		
		
		
		
		
		
		
	PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#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). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			AndyD, спасибо. 
		
		
		
		
		
		
		
	Способ "Во-первых" действительно ускорил работу с 10 секунд до практически мгновенно (глазом не заметно). Способ "Во-вторых" тоже хороший. Цитата: 
	
		
			Сообщение от AndyD 
... а зачем вам именно контейнер засовывать в Binary? Не проще ли данные вставлять непосредственно в него? Меня все-таки удивляет вот что. Есть класс Binary и есть класс BinData. Вроде бы одно и тоже, но похоже, что прямого пути передачи данных между объектами этих классов нет...  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Дело в том, что при сохранении в BinData к самим данным дополнительно добавляется служебная информация - идентификатор контейнера, типы данных, размеры контенера и т.д. Не припомню в WinApi функций, которые бы понимали эти данные.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от AndyD
			
			 
Дело в том, что при сохранении в BinData к самим данным дополнительно добавляется служебная информация - идентификатор контейнера, типы данных, размеры контенера и т.д. Не припомню в WinApi функций, которые бы понимали эти данные. 
		
	В BinData служебная информация в сами данные не добавляется. Во всяком случае, при побайтовом копировании они не вылезают. Последний раз редактировалось PMS; 10.08.2006 в 11:44.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может я чего-то пропустил, но что такое "заранее заполненный контейнер _c"? 
		
		
		
		
		
		
			Как вы его получаете? 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я имел ввиду, что контейнер передается в метод из поля таблицы, а загружается он туда (в таблицу) из файла.
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось PMS; 10.08.2006 в 12:11.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А файл. Тогда прокатит. 
		
		
		
		
		
		
			Я думал, что речь идет об обычном контейнере с произвольным количеством элементов. 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, да, конечно, я забыл сказать, что в контейнере лежит один объект - файл.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			удалось решить? я пока вижу выход только через биндата сохранить в файл а после через winapi влить обратно в binary- но нужно искать более быстрый способ
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А вот это не то? 
		
		
		
		
		
		
		
	X++: BinData.setBinaryData(Binary);  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			так set вроде как вносит данные или я не прав и она может не только вносить но и выводить? попробую конечно, но чет не верится
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#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 | |||
		
  |