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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2006, 19:35   #1  
EVGL is offline
EVGL
Moderator
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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 / 868 (32) +++++++
Регистрация: 03.04.2002
Адрес: Australia
В зависимости от текущего языка вызывают разные формы?
__________________
Isn't it nice when things just work?
Старый 21.12.2006, 19:45   #3  
EVGL is offline
EVGL
Moderator
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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
Соотечественники
 
220 / 201 (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
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,308 / 2002 (75) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
@SYS22807

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

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

Что, неужели не только у нас есть "трудности перевода"?
Старый 05.03.2007, 16:44   #9  
EVGL is offline
EVGL
Moderator
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
наверное американский английский для англичан - как для нас "язык падонкафф"
Старый 05.03.2007, 16:54   #11  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
4,308 / 2002 (75) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Цитата:
Сообщение от EVGL Посмотреть сообщение
Что значит "лучшее"? Американцы пишут через "z", англичане - через "s", все правильно. Это не одно такое слово: materialise (BrE), materialize (AmE).
А, ну тогда я спокоен.
Британский англ. просто редко в письменном виде вижу.
Спасибо, что прояснил ситуацию. А то уж обрадовался было, подумал, не одни мы такие на свете, с суржиком повсюду.
Старый 05.03.2007, 17:01   #12  
EVGL is offline
EVGL
Moderator
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Они, британцы, к этому серьезно относятся. В одном решении, которое адаптировали для англичан, пришлось поменять всех "vendors" на "suppliers", "production order" на "works order", "inventory" на "stock".
Старый 05.03.2007, 18:42   #13  
glibs is offline
glibs
Member
Лучший по профессии 2011
Сотрудники компании It Box
Лучший по профессии 2009
Most Valuable Professional
 
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
Лучший по профессии 2011
Сотрудники компании It Box
Лучший по профессии 2009
Most Valuable Professional
 
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
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 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
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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
Участник
Лучший по профессии 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
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,935 / 2078 (77) +++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от EVGL Посмотреть сообщение
2 микросекунды
Он вероятно расчитывал на пошаговой выполнение под отладчиком (интересно, есть ли другой процесс, который может сильно замедлить выполнение кода?)
Старый 06.03.2007, 17:53   #20  
EVGL is offline
EVGL
Moderator
Лучший по профессии 2014
Соотечественники
 
3,489 / 1930 (71) ++++++++
Регистрация: 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, время: 08:10.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.