|
|
#1 |
|
Участник
|
Вопрос в следующем - если в Info вывести текст "\t Шла маша \n по шоссе" то все работает, а если этот текст запихнуть в метку - то он оборзиться как есть "\t Шла маша \n по шоссе".
PS причем метки со специальными символами найдены даже в sys слое и они так же не работают |
|
|
|
|
#2 |
|
Участник
|
Причина проста: при выводе в infolog (да и вообще при использовании в коде) спецсимволы заменяются на их настоящие значения при компиляции (строка будет выглядетя на самом деле так 0x09" Шла маша "0x13" по шоссе").
При вводе значений меток в основном используется интерфейс пользователя. Данные, введенные через него будут восприниматься как есть без замен, т.е. строка так и останется в этом виде: "\t Шла маша \n по шоссе". Как пример - программное создание метки X++: Label lab = new Label(); str s; ; SetPrefix("Метка с переносами"); s = "\t Шла маша \n по шоссе"; lab.insert(s); info(lab.extractString(lab.searchFirst(s)));
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#3 |
|
Участник
|
Хм, спасибо но кажется нам не подойдет - нужно ж на разных языках выводить
|
|
|
|
|
#4 |
|
Участник
|
Можно ввести через интерфейс, а затем изменить программно
X++: Label lab; str s; str lang; int i; str literal = literalstr("@USR1"); str old ; SetPrefix("Замена спецсимволов"); for (i=1;i<=xLanguage::languageCount();i++) { lang = xLanguage::index2languageID(i); if (lang) { lab = new Label(lang); old = lab.extractString(literal); if (old != literal) { s = strReplace(old, @"\t", "\t"); s = strReplace(s, @"\n", "\n"); s = strReplace(s, @"\r", "\r"); if (s != old) lab.modify(literal, s); info(literal + "::" + lab.extractString(literal)); } } }
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
| За это сообщение автора поблагодарили: MironovI (2). | |
|
|
#5 |
|
MCTS
|
А почему бы не использовать strFmt, а сообщение разделить на 2 части?
info(strFmt("\t %1 \n %2", "шла маша", "по шоссе")) а простые строки легко преобразуются в метку. |
|
|
|
|
#6 |
|
Участник
|
Цитата:
|
|
|
|
|
#7 |
|
Участник
|
|
|
|
|
|
#8 |
|
Участник
|
Не надо программно!
Есть функции для работы с многострочными метками... Эх, Аксапту в офисе оставил, не могу проверить. В общем, посмотрите как метки выводятся в мастерах. Там есть длинные тексты с переводом строк. |
|
|
|
|
#9 |
|
Участник
|
Для вывода используется StringEdit со свойством MultiLine=yes. Сам текст в контроле набирается конкатенацией нескольких меток. Например (так сделано в мастере отчетов)
X++: welcomeText.text("@SYS56067" + ' ' + "@SYS56069" + ' ' + "@SYS68308" + '\n\n' + "@SYS68309" + '\n\n' + "@SYS68310");
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Спец символы в AsciiIO и CommaIO | 1 | |||
| Oracle(сортировка + символы) | 2 | |||
| Специальные символы | 4 | |||
| Символы для шаблона ном. серий и вообще | 1 | |||
|