AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.11.2010, 19:24   #1  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Ошибка при работе с binary в Ax2009
Столкнулся с неожиданной проблемой в работе с binary.

Код, который ранее работал в ax 3.0 sp3:
X++:
binary  binary = new binary(3);
    str     value = "123";
    ;
    binary.string(0, value);
В Ax2009 (RU5) вызывает ошибку (на последней строке): "Ошибка времени выполнения.binary (объект), метод string вызван с недопустимыми параметрами".

Если исправить
binary binary = new binary(4); - то все отрабатывает.
(То есть увеличение размера binary на один дополнительный байт решает проблему).

Но мне нужно чтобы размер binary был такой же как и количество символов в тексте,
который я в него записываю.

Интересно, это ошибка ядра, или так и было задумано ?
Старый 03.11.2010, 20:18   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Для нулевого символа окончания строки место надо выделять.

Кстати, у меня в 3.0 KR2 тоже ругается
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: someOne (1).
Старый 08.11.2010, 10:04   #3  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от AndyD Посмотреть сообщение
Для нулевого символа окончания строки место надо выделять.

Кстати, у меня в 3.0 KR2 тоже ругается
Согласен. Тем не менее в ранней версии как то работало без этого.
Написал функцию, которая решает данную проблему. Идея в том что в 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при установке корпоративного портала ax2009, ошибка доступа Antant DAX: Администрирование 0 11.09.2009 09:28
Странная ошибка при работе в трехзвенке. malex DAX: Администрирование 8 02.05.2008 03:33
Ошибка при работе клиента при выборе MenuItemButton из MenuButton на любой форме Карис DAX: Администрирование 3 04.04.2008 08:56
Ошибка времени выполнения: Binary (Объект), метод string вызван с недопустимыми параметрами. mmm DAX: Программирование 4 15.05.2007 16:00
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:14.