|
19.01.2007, 10:35 | #1 |
Участник
|
Специальные символы в метках
Вопрос в следующем - если в Info вывести текст "\t Шла маша \n по шоссе" то все работает, а если этот текст запихнуть в метку - то он оборзиться как есть "\t Шла маша \n по шоссе".
PS причем метки со специальными символами найдены даже в sys слое и они так же не работают |
|
19.01.2007, 11:33 | #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 |
|
19.01.2007, 12:14 | #3 |
Участник
|
Хм, спасибо но кажется нам не подойдет - нужно ж на разных языках выводить
|
|
19.01.2007, 13:20 | #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). |
19.01.2007, 16:19 | #5 |
Участник
|
|
|
19.01.2007, 22:20 | #6 |
Участник
|
Не надо программно!
Есть функции для работы с многострочными метками... Эх, Аксапту в офисе оставил, не могу проверить. В общем, посмотрите как метки выводятся в мастерах. Там есть длинные тексты с переводом строк. |
|
19.01.2007, 15:22 | #7 |
MCTS
|
А почему бы не использовать strFmt, а сообщение разделить на 2 части?
info(strFmt("\t %1 \n %2", "шла маша", "по шоссе")) а простые строки легко преобразуются в метку. |
|
19.01.2007, 16:13 | #8 |
Участник
|
По воле случая пришлось таки переводить свои русские метки на аглицкий - представляешь что получиться если перевести отдельно два куска приложения..
|
|
19.01.2007, 22:51 | #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 |
|