|  03.11.2010, 19:24 | #1 | 
| Участник | Ошибка при работе с binary в Ax2009 
			
			Столкнулся с неожиданной проблемой в работе с binary. Код, который ранее работал в ax 3.0 sp3: X++: binary binary = new binary(3); str value = "123"; ; binary.string(0, value); Если исправить binary binary = new binary(4); - то все отрабатывает. (То есть увеличение размера binary на один дополнительный байт решает проблему). Но мне нужно чтобы размер binary был такой же как и количество символов в тексте, который я в него записываю. Интересно, это ошибка ядра, или так и было задумано ? | 
|  | 
|  03.11.2010, 20:18 | #2 | 
| Участник | 
			
			Для нулевого символа окончания строки место надо выделять. Кстати, у меня в 3.0 KR2 тоже ругается 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | |
| За это сообщение автора поблагодарили: someOne (1). | |
|  08.11.2010, 10:04 | #3 | 
| Участник | Цитата: Написал функцию, которая решает данную проблему. Идея в том что в binary "штатно" вставляется n-1 символов, а окончательный символ вставляется как binary.byte(...). Таким образом возможно получить binary того же размера что и длина текста, который необходимо поместить в binary. (Сформированный таким образом binary передается на вход функции внешней DLL, для которой этот binary является структурой данных с строго заданным смещением...) Может быть кому то окажется полезным... X++: static client server void binary_String(binary _binary, str _value, int _binaryStrLen, int _offset) { // функция для того чтобы обойти баг ? невозможности вставить n символов в bynary размером n байт binary tmpBinary; //для преобразования char2num в не unicode код ; if (strLen(_value) >= _binaryStrLen) { tmpBinary = new binary(2); tmpBinary.string(0, subStr(_value, _binaryStrLen, 1)); _binary.string(_offset, subStr(_value, 1, _binaryStrLen - 1)); _binary.byte((_offset + _binaryStrLen) - 1, tmpBinary.word(0)); } else { _binary.string(_offset, _value); } } | 
|  | 
| Теги | 
| binary, feature | 
|  | 
| 
 |