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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.04.2014, 22:59   #1  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от udmitriy Посмотреть сообщение
а по подробнее (пример какой нибудь можно или ссылку)(не работал с этим еще) - как его из binary инициализировать
Как-то так:
X++:
    Binary                  binary1 = new Binary("string1");
    Binary                  binary2 = new Binary("string2");
    Binary                  binaryResult;
    
    System.Byte[]           byte1;
    System.Byte[]           byte2;
    System.Byte[]           byteResult;
    
    int                     len;
    System.IO.MemoryStream  memoryStream;
    ;
    
    try
    {
        memoryStream    = binary1.getMemoryStream();
        byte1           = memoryStream.ToArray();
        memoryStream.Close();
    
        memoryStream    = binary2.getMemoryStream();
        byte2           = memoryStream.ToArray();
        memoryStream.Close();
    
        len             = CLRInterop::getAnyTypeForObject(byte1.get_Length()) - 1;
        len            += CLRInterop::getAnyTypeForObject(byte2.get_Length()) - 1;
        
        byteResult      = new System.Byte[len]();
        
        memoryStream    = new System.IO.MemoryStream(byteResult);
        memoryStream.Write(byte1, 0, CLRInterop::getAnyTypeForObject(byte1.get_Length()) - 1);
        memoryStream.Write(byte2, 0, CLRInterop::getAnyTypeForObject(byte2.get_Length()) - 1);
        
        binaryResult    = Binary::constructFromMemoryStream(memoryStream);
        memoryStream.Close();
        
        info(binaryResult.string(0));
    }
    catch (Exception::CLRError)
    {
        error(AifUtil::getClrErrorMessage());
    }
еще результирующий массив можно так заполнить:
X++:
...
        byteResult      = new System.Byte[len]();
        
        System.Buffer::BlockCopy(
            byte1, 
            0, 
            byteResult, 
            0, 
            CLRInterop::getAnyTypeForObject(byte1.get_Length()) - 1);
        
        System.Buffer::BlockCopy(
            byte2, 
            0, 
            byteResult, 
            CLRInterop::getAnyTypeForObject(byte1.get_Length()) - 1, 
            CLRInterop::getAnyTypeForObject(byte2.get_Length()) - 1);
        
        memoryStream    = new System.IO.MemoryStream(byteResult);
...
На больших объемах не проверял, так что о производительности ничего не скажу. Стоит учесть, что в данном случае, при вычислении длины массива отнимается 1, т.к. строка завершается символом конца строки, который нас не интересует. Если оперируете данными файла, то скорее всего 1 вычитать не придется.
__________________
Кононов Пётр

Последний раз редактировалось pedrozzz; 16.04.2014 в 23:06.
Старый 17.04.2014, 05:32   #2  
udmitriy is offline
udmitriy
Участник
 
22 / 13 (1) ++
Регистрация: 08.08.2013
Адрес: Primorye
Спасибо, но разобрался через rtlmovememory. нескоолько строчек и производительность приятно удивила
Старый 17.04.2014, 13:03   #3  
udmitriy is offline
udmitriy
Участник
 
22 / 13 (1) ++
Регистрация: 08.08.2013
Адрес: Primorye
пример выложу сюда ODBC ax2009
За это сообщение автора поблагодарили: S.Kuskov (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Binary.string John_11 DAX: Программирование 6 27.10.2017 16:33
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
Sample Design Patterns: Book Give-away: 'Microsoft Dynamics AX 2012 Security How-To' Blog bot DAX Blogs 0 13.12.2012 01:13
ax-erp: How to pass value from MenuItemButton to a Dialog Class? Blog bot DAX Blogs 0 19.09.2012 20:11
Ошибка при работе с binary в Ax2009 someOne DAX: Программирование 2 08.11.2010 10:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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