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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2008, 13:26   #1  
leshy is offline
leshy
Участник
 
118 / 11 (1) +
Регистрация: 23.02.2004
Адрес: Киев
Длина строки
Если я объявляю
Str 10 _str

Можно ли как-нибудь получить максимальную длину строки _str ?
Для EDT можно через DictType, а для базового типа не получается
Старый 19.03.2008, 13:48   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
перебором того что вам нужно и сравнивать strLen
Старый 19.03.2008, 13:54   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Что-то ничего в голову не приходит кроме как сделать что-то типа
strRep() или strPrompt(), применить к этой строке = заполнить ее каким-то символом много раз. В смысле, к примеру, 2000 символов попытаться туда впихнуть.
И после этого замерить strLen()
Старый 19.03.2008, 13:57   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А цель какая?
Объявить переменную максимальной длины? Напишите:
X++:
str _str;
Этого достаточно.
Или нужно узнать число? В этом случае - можно сразу сказать - 1000 (любая строка, более длинная будет обрезана до 1000).
__________________
Возможно сделать все. Вопрос времени
Старый 19.03.2008, 14:14   #5  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Мм, вопрос: а зачем? Если это базовый тип, обьявленый вами же, то задача по узнаванию максимальной длины, которую сами же задали в коде - бессмысленна. А если же есть некое поле некой таблицы, которое базируется на базовый тип str и надо узнать его макс. длину, то можно воспользоватся классом DictField и его методом stringLen. Ну а если переменная пасуется, как параметр откуда-то извне, то лучше всего, пожалуй, делать как Кашперук написал.
__________________
Axapta has seduced me deadly!

Последний раз редактировалось HorrR; 19.03.2008 в 14:17.
Старый 19.03.2008, 14:45   #6  
leshy is offline
leshy
Участник
 
118 / 11 (1) +
Регистрация: 23.02.2004
Адрес: Киев
Тогда вопрос так:
Каким образом можно красиво выгрузить структуру в текстовый файл, где каждое поле имеет фиксированную длину (поля выравнены влево и заполнены пробелами)?

Длина строки мне нужна было для автоматического вычисления смещения поля в результирующей строке.
Старый 19.03.2008, 15:32   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 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;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Цветные строки в Grid Sergo DAX: База знаний и проекты 14 19.04.2012 10:02
HRM,склонение ФИО и все все все OmenSore DAX: Функционал 22 09.02.2009 17:08
Максимальная длина типа String в DAX 4.0 alex55 DAX: Программирование 31 29.01.2009 15:33
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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