AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2006, 19:35   #1  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
:) The daily Axapta WTF
Из творчества программистов датской компании Munk IT:
X++:
void Munk_NoteMark()
{
    MenuFunction menuFunction;
    Args         args = new Args();
    ;
    menuFunction = new MenuFunction('@NEO258', MenuItemType::Display);
    args.caller(this);
    menuFunction.run(args);
}
@NEO258: DocuView
Старый 21.12.2006, 19:43   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
1,970 / 874 (33) +++++++
Регистрация: 03.04.2002
Адрес: Australia
В зависимости от текущего языка вызывают разные формы?
__________________
Isn't it nice when things just work?
Старый 21.12.2006, 19:45   #3  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Дает сбой на любом языке интерфейса, кроме датского. Вот к чему приводит бездумное увлечение Best Practices.
Старый 21.12.2006, 20:05   #4  
Alex_K is offline
Alex_K
Участник
 
528 / 35 (3) +++
Регистрация: 07.02.2003
Мдя... Как-то я такое уже видел, только в американском решении. Видимо, это заразно...
Старый 02.03.2007, 13:55   #5  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Из творчества одного системного администратора из Польши:
X++:
prodRouteItemInfo.Values[17] =
     num2str(str2num(this.propertyToValueText(
                                        prodParameters.TCHPropIdCutOffLength,
                                        inventTableDesign)),0,1,2,3);
Старый 02.03.2007, 15:04   #6  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
223 / 203 (7) ++++++
Регистрация: 27.02.2006
Адрес: Дания
А как вам такая строка, написанная безымянным швейцарским программистом?

X++:
    this = null;
За это сообщение автора поблагодарили: AlGol (1), EVGL (5), Vadik (1).
Старый 05.03.2007, 16:19   #8  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,340 / 2038 (76) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
@SYS22807

На англ. (США) у меня эта метка - Synchronize
А на англ. (GB, Australia) - Synchronise

Я в других инглишах не силен, может кто лучшее подскажет?

Что, неужели не только у нас есть "трудности перевода"?
Старый 05.03.2007, 16:44   #9  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Что значит "лучшее"? Американцы пишут через "z", англичане - через "s", все правильно. Это не одно такое слово: materialise (BrE), materialize (AmE).

Последний раз редактировалось EVGL; 05.03.2007 в 16:47.
Старый 05.03.2007, 16:45   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
3,991 / 2133 (79) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
наверное американский английский для англичан - как для нас "язык падонкафф"
Старый 05.03.2007, 16:54   #11  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,340 / 2038 (76) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от EVGL Посмотреть сообщение
Что значит "лучшее"? Американцы пишут через "z", англичане - через "s", все правильно. Это не одно такое слово: materialise (BrE), materialize (AmE).
А, ну тогда я спокоен.
Британский англ. просто редко в письменном виде вижу.
Спасибо, что прояснил ситуацию. А то уж обрадовался было, подумал, не одни мы такие на свете, с суржиком повсюду.
Старый 05.03.2007, 17:01   #12  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Они, британцы, к этому серьезно относятся. В одном решении, которое адаптировали для англичан, пришлось поменять всех "vendors" на "suppliers", "production order" на "works order", "inventory" на "stock".
Старый 05.03.2007, 18:42   #13  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 901 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от EVGL
...
Вот к чему приводит бездумное увлечение Best Practices.
...
EVGL, господь с вами. Что вы такое говорите? Ладно бы какой-то балбес так глупо пошутил...

К вам же люди прислушиваются!

А по БестПрактису это пишется примерно так.

menuFunction = new MenuFunction(menuitemdisplaystr(Bla-Bla-Bla), MenuItemType:isplay);
__________________
С уважением,
glibs®
Старый 05.03.2007, 20:02   #14  
ziva is offline
ziva
Иван Захаров
Злыдни
Лучший по профессии AXAWARD 2013
 
63 / 102 (4) +++++
Регистрация: 25.03.2005
А вот творение одного гуру:
X++:
static container now()
{
    TransDate   _date;
    TimeOfDay   _time;

    do
    {
        _date = today();
        _time = timenow();
    }
    while (_date != today());

    return [_date, _time];
}
Кто считает этот код неверным - пусть бросит в меня камень
За это сообщение автора поблагодарили: Stitch_MS (1), Kabardian (1).
Старый 05.03.2007, 22:55   #15  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 901 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от EVGL
...
Они, британцы, к этому серьезно относятся. В одном решении, которое адаптировали для англичан, пришлось поменять всех "vendors" на "suppliers", "production order" на "works order", "inventory" на "stock".
...
По имеющимся у меня сведениям "work order" — это наряд, а не производственный заказ. Хотя, м.б. у меня как раз сведения из американского английского. В общем, им, англичанам, виднее, конечно.
__________________
С уважением,
glibs®
Старый 06.03.2007, 09:47   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
3,991 / 2133 (79) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от ziva Посмотреть сообщение
А вот творение одного гуру:
X++:
static container now()
{
    TransDate   _date;
    TimeOfDay   _time;

    do
    {
        _date = today();
        _time = timenow();
    }
    while (_date != today());

    return [_date, _time];
}
Кто считает этот код неверным - пусть бросит в меня камень
Вероятно человек боялся что код запустят в полночь....
Старый 06.03.2007, 10:58   #17  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от belugin Посмотреть сообщение
Вероятно человек боялся что код запустят в полночь....
Да, наверное. Но даже в этом случае хватило бы одного if(). Интересно, если Аксапта исполняет две строчки кода за, скажем, 2 микросекунды, то какова вероятность наступления полуночи за этот промежуток времени?

2 E(-6) / 3600 / 24 ~ 1,5 E(-10)

Неплохо. Кроме того, выход из процедуры, скорее всего, занимает большее время, чем исполнение цикла. Осталось выяснить, для какой прикладной задачи потребовалась столь дьявольская точность.
Старый 06.03.2007, 10:58   #18  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,555 / 2311 (83) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от belugin Посмотреть сообщение
Вероятно человек боялся что код запустят в полночь....
Неа. Без долей секунды полночь.
Дату можно получить в предыдущем дне, а время уже в следующем. В результате отстанем не сутки.
PS Вероятность одновременно написать ответ намного выше
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 06.03.2007 в 11:03.
Старый 06.03.2007, 11:27   #19  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
3,991 / 2133 (79) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от EVGL Посмотреть сообщение
2 микросекунды
Он вероятно расчитывал на пошаговой выполнение под отладчиком (интересно, есть ли другой процесс, который может сильно замедлить выполнение кода?)
Старый 06.03.2007, 17:53   #20  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2015
Лучший по профессии 2014
 
3,518 / 1996 (74) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Post
Я постарался улучшить код, избавив его от указанных недостатков.
X++:
static container now()
{
    #define.KernelDLL('KERNEL32')
    #define.SizeOfStructure(8*4)

    Binary      systemtime = new Binary(#SizeOfStructure);
    DLL         _DLL          = new DLL(#KernelDLL);
    DLLFunction _GetSystemTime = new DLLFunction(_DLL, 'GetLocalTime');

    int         wYear;
    int         wMonth;
    int         wDayOfWeek;
    int         wDay;
    int         wHour;
    int         wMinute;
    int         wSecond;
    int         wMilliseconds;

    date        resDate;
    TimeOfDay   resTime;


    _GetSystemTime.arg(ExtTypes::Pointer);

    _GetSystemTime.call(systemtime);

    wYear   = systemtime.word(0);
    wMonth  = systemtime.word(2);
    wDay    = systemtime.word(6);

    resDate = mkdate(wDay, wMonth, wYear);

    wHour   = systemtime.word(8);
    wMinute = systemtime.word(10);
    wSecond = systemtime.word(12);

    resTime = wSecond + (wMinute + wHour*60)*60;

    info(strFmt("%1 %2", resDate, time2str(resTime, -1, -1)));

    return [resDate, resTime];
}
К сожалению, он возвращает время Coordinated Universal Time (UTC), т.е. для Гринвичского меридиана. Буду рад, если кто-нибудь продолжит работу и скорректирует код с учетом временной зоны.

P.S. Исправил: надо было успользовать функцию GetLocalTime вместо GetSystemTime.

Как нетрудно видеть, код в итоге стал не менее компактным, зато более доступным и понятным.

Последний раз редактировалось EVGL; 06.03.2007 в 18:03.
Теги
axapta, cil, rasset, баг

 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:18.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.