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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.02.2007, 15:40   #1  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
str2num проблема
Почему в Аxапта проверка идет по одному "алгоритму", а преобразование по другому...

Конкретно, - "запятая" это "неправильный" симпвол, и поэтому не правильно преобразует такие флоат-ы.

Понятно, что можно strreplace()... но всё равно как то не красиво.

X++:
static void testFloats(Args _args)
{
    str     s = "5,56";
    real    r = 5.56;
    ;

    if (str2numok(s) && r != str2num(s))
    {
        info("wtf");
    } else {
        info("ok");
    }
}

Последний раз редактировалось Delfins; 12.02.2007 в 16:08.
Старый 12.02.2007, 15:47   #2  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
PHP код:
info(strFmt("str2num(s) = %1"str2num(s))); 
возвращает
str2num(s) = 5,00

Upd: Извиняюсь, сразу не до конца понял вопрос

Последний раз редактировалось DreamCreator; 12.02.2007 в 15:52.
Старый 12.02.2007, 15:50   #3  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от Delfins Посмотреть сообщение
Почему в Аxапта проверка идет по одному "алгоритму", а преобразование по другому...
Это сложный философский вопрос.

Цитата:
Сообщение от Delfins Посмотреть сообщение
Понятно, что можно strreplace().
Можно просто убрать запятую из метода str2numok и все, тогда все будет чуть более "корректно". Этот метод в стандартной Аксапте вообще только 1 раз используется в классе RTax25StdOperandType_Constant. А вот если надо, чтобы и запятая обрабатывалась, то да, надо strreplace() использовать. Написать просто свой метод str2numAdv() и вместо str2num() всегда вызывать его.

PS Код лучше обрамлять тегом XPP, а не Code. Тогда будет правильно работать подсветка текста.
Как вставить кусок кода?
Старый 12.02.2007, 16:13   #4  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Цитата:
Сообщение от oip Посмотреть сообщение
Можно просто убрать запятую из метода str2numok и все
Это чисто принципиально... Я этот метод не использую, но согласитесь, что "5.36" и "5,36" в формате TEXT в принципе должны обозначать одно и тоже... Ну типа "число" Хотя документация молчит на этот счет

ПС: всё это связано с импортами
ППС: топик чисто философский
Старый 12.02.2007, 17:13   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А вы посмортите, как реализуется эта функция (str2numok) и вопросы у вас отпадут. Например, это "e.ee523,ee56e.e321" - по ее мнению число
__________________
Axapta v.3.0 sp5 kr2
Старый 12.02.2007, 17:53   #6  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Видел, видел... надо regexp-ом проверять
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с поиском в InventTrans после changeCompany (DAX4) Raven Melancholic DAX: Программирование 11 13.03.2008 14:02
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Проблема с Х++, глазами Ява-девелопера blacky DAX: Программирование 3 26.11.2002 11:50
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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