Показать сообщение отдельно
Старый 19.03.2008, 15:32   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,711 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от leshy Посмотреть сообщение
Тогда вопрос так:
Каким образом можно красиво выгрузить структуру в текстовый файл, где каждое поле имеет фиксированную длину (поля выравнены влево и заполнены пробелами)?

Длина строки мне нужна было для автоматического вычисления смещения поля в результирующей строке.
Писалось для Axapta 2.5, возможно в старших версиях есть уже какая-то штатная функция

X++:
// 09.12.2004
// Используя в качестве образца указанный расширенный тип данных (EDT)
// добавляет нужное количество ведущих или концевых символов
// Например, rtg_StringAsType('1','AccountNum') вернет строку '         1'
static str rtg_StringAsType(str     _str,               // символьная строка для модификации
                            Name    _nameType,          // название типа данных - образца для выравнивания
                            Char    _char = ' ',        // каким символом добавлять недостающую длину
                            Boolean _padEnd = false)    // следует ли добавлять символы в конец строки
{
    str         strReturn;
    Dictionary  dictionary = new Dictionary();
    DictType    dictType;
    ;

    strReturn   = _str;
    dictType    = new DictType(dictionary.typeName2Id(_nameType));
    if (dictType && dictType.baseType() == types::STRING)
    {
        if (dictType.stringRight())
        {
            strReturn = strRFix(strReturn,dictType.stringLen(),_char);
        }
        else
        {
            if (_padEnd)
            {
                strReturn = strLFix(strReturn,dictType.stringLen(),_char);
            }
        }
    }
    return strReturn;
}