Цитата:
Сообщение от
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;
}