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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.07.2009, 13:26   #1  
rDenis is offline
rDenis
Участник
 
6 / 11 (1) +
Регистрация: 21.03.2009
BinData oбработка исключений / catch exception, AX 4
Добрый день,

Есть код:

X++:
BinData         tmpBinData = new BinData();
str                 text;
;

tmpBinData.setAsciiData(text);
Если подаётся text с символом вне Windows-1252(ANSI) кидается ошибка:
Error:Invalid character in ASCII string. All characters must be >= 0 and <= 255.

Ошибку надо поймать, и вместо неё отобразить нужную для пользователя информацию.

X++:
 try
    {
        tmpBinData.setAsciiData(text);
    }
    catch
    {
        throw error("");
    }
Не ловит её.
Второй параметр _codePage = 65001 к setAsciiData() не подходит, так как ошибка должна быть.

Единственное что пока придумал, сделать так:
X++:
TextBuffer      tb = new TextBuffer();
    int             i;
    int             charIntValue;
    char            char;
    ;

    tb.appendText(text);
    for(i=0; i< tb.size(); i++)
    {
        char = tb.subStr(i, 1);
        charIntValue = System.Convert::ToInt16(System.Convert::ToChar(char));
        if(charIntValue < 0 || charIntValue > 255)
        throw error("");

    }

tmpBinData.setAsciiData(text):

Вопрос такой, можно ли как то отловить это исключение, в момент его появления используя try/catch. Или может возможно решить эту проблему менее громоздким способом.
Старый 12.07.2009, 17:28   #2  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Здравствуйте.
Скажите, а откуда вы получаете text?
Если вы рассчитываете, что в этой переменной все символы из 1252 (8-ми битные), то может стоит лучше контролировать сам ввод информации.
Если все таки не выходит, попробуйте использовать классы .NET System.Encoding - вроде там есть средства контроля символов в строке.
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
За это сообщение автора поблагодарили: rDenis (1).
Старый 12.07.2009, 17:50   #3  
rDenis is offline
rDenis
Участник
 
6 / 11 (1) +
Регистрация: 21.03.2009
Эта проверка стоит в в варианте класса PDFViewer метод appendTextToPage(). То есть приходится работать с тем, что подается при генерации pdf.
Спасибо за наводку на System.Encoding , я уже бегло просмотрел что там есть, сейчас попробую углубиться.
Старый 12.07.2009, 23:24   #4  
rDenis is offline
rDenis
Участник
 
6 / 11 (1) +
Регистрация: 21.03.2009
Через for медленно идет . Сделал так:
X++:
BinData tmpBinData = new BinData();
    System.Text.Encoding    e = System.Text.Encoding::GetEncoding(1252, 
                            new System.Text.EncoderExceptionFallback(), 
                            new System.Text.DecoderExceptionFallback());
    Binary          bi;
;

 try
    {
        bi = e.GetBytes(text);
    }

    catch(Exception::CLRError)
    {
        throw error("");
    }

    tmpBinData.setAsciiData(text);

plumbum спасибо за направление поиска
Старый 13.07.2009, 14:07   #5  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Ага, не за что
я ж даже namespace не тот указал
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Теги
ax4.0, try/catch, исключения

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47
Arijit Basu: Reporting & BI in AX: An Overview [Level 100] Blog bot DAX Blogs 0 07.01.2008 16:01

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

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

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