19.03.2008, 13:26 | #1 |
Участник
|
Длина строки
Если я объявляю
Str 10 _str Можно ли как-нибудь получить максимальную длину строки _str ? Для EDT можно через DictType, а для базового типа не получается |
|
19.03.2008, 13:48 | #2 |
Участник
|
перебором того что вам нужно и сравнивать strLen
|
|
19.03.2008, 13:54 | #3 |
Участник
|
Что-то ничего в голову не приходит кроме как сделать что-то типа
strRep() или strPrompt(), применить к этой строке = заполнить ее каким-то символом много раз. В смысле, к примеру, 2000 символов попытаться туда впихнуть. И после этого замерить strLen() |
|
19.03.2008, 13:57 | #4 |
Administrator
|
А цель какая?
Объявить переменную максимальной длины? Напишите: X++: str _str; Или нужно узнать число? В этом случае - можно сразу сказать - 1000 (любая строка, более длинная будет обрезана до 1000).
__________________
Возможно сделать все. Вопрос времени |
|
19.03.2008, 14:14 | #5 |
Участник
|
Мм, вопрос: а зачем? Если это базовый тип, обьявленый вами же, то задача по узнаванию максимальной длины, которую сами же задали в коде - бессмысленна. А если же есть некое поле некой таблицы, которое базируется на базовый тип str и надо узнать его макс. длину, то можно воспользоватся классом DictField и его методом stringLen. Ну а если переменная пасуется, как параметр откуда-то извне, то лучше всего, пожалуй, делать как Кашперук написал.
__________________
Axapta has seduced me deadly! Последний раз редактировалось HorrR; 19.03.2008 в 14:17. |
|
19.03.2008, 14:45 | #6 |
Участник
|
Тогда вопрос так:
Каким образом можно красиво выгрузить структуру в текстовый файл, где каждое поле имеет фиксированную длину (поля выравнены влево и заполнены пробелами)? Длина строки мне нужна было для автоматического вычисления смещения поля в результирующей строке. |
|
19.03.2008, 15:32 | #7 |
Участник
|
Цитата:
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; } |
|