Показать сообщение отдельно
Старый 10.08.2006, 08:46   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Во-первых, самый простой способ ускорить вашу процедуру
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
В-третьих, а зачем вам именно контейнер засовывать в Binary? Не проще ли данные вставлять непосредственно в него?
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Corel (1).