21.12.2006, 19:35 | #1 |
Banned
|
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); } |
|
21.12.2006, 19:43 | #2 |
NavAx
|
В зависимости от текущего языка вызывают разные формы?
__________________
Isn't it nice when things just work? |
|
21.12.2006, 19:45 | #3 |
Banned
|
Дает сбой на любом языке интерфейса, кроме датского. Вот к чему приводит бездумное увлечение Best Practices.
|
|
21.12.2006, 20:05 | #4 |
Участник
|
Мдя... Как-то я такое уже видел, только в американском решении. Видимо, это заразно...
|
|
02.03.2007, 13:55 | #5 |
Banned
|
Из творчества одного системного администратора из Польши:
X++: prodRouteItemInfo.Values[17] = num2str(str2num(this.propertyToValueText( prodParameters.TCHPropIdCutOffLength, inventTableDesign)),0,1,2,3); |
|
02.03.2007, 15:04 | #6 |
Участник
|
А как вам такая строка, написанная безымянным швейцарским программистом?
X++: this = null; |
|
|
За это сообщение автора поблагодарили: AlGol (1), EVGL (5), Vadik (1). |
05.03.2007, 15:58 | #7 |
Участник
|
X++: (iRetAvans > 1 ? false : true); |
|
05.03.2007, 16:19 | #8 |
Участник
|
@SYS22807
На англ. (США) у меня эта метка - Synchronize А на англ. (GB, Australia) - Synchronise Я в других инглишах не силен, может кто лучшее подскажет? Что, неужели не только у нас есть "трудности перевода"? |
|
05.03.2007, 16:44 | #9 |
Banned
|
Что значит "лучшее"? Американцы пишут через "z", англичане - через "s", все правильно. Это не одно такое слово: materialise (BrE), materialize (AmE).
Последний раз редактировалось EVGL; 05.03.2007 в 16:47. |
|
05.03.2007, 16:45 | #10 |
Участник
|
наверное американский английский для англичан - как для нас "язык падонкафф"
|
|
05.03.2007, 16:54 | #11 |
Участник
|
Цитата:
Британский англ. просто редко в письменном виде вижу. Спасибо, что прояснил ситуацию. А то уж обрадовался было, подумал, не одни мы такие на свете, с суржиком повсюду. |
|
05.03.2007, 17:01 | #12 |
Banned
|
Они, британцы, к этому серьезно относятся. В одном решении, которое адаптировали для англичан, пришлось поменять всех "vendors" на "suppliers", "production order" на "works order", "inventory" на "stock".
|
|
05.03.2007, 18:42 | #13 |
Member
|
Цитата:
Сообщение от EVGL
...
Вот к чему приводит бездумное увлечение Best Practices. ... К вам же люди прислушиваются! А по БестПрактису это пишется примерно так. menuFunction = new MenuFunction(menuitemdisplaystr(Bla-Bla-Bla), MenuItemType:isplay);
__________________
С уважением, glibs® |
|
05.03.2007, 20:02 | #14 |
Иван Захаров
|
А вот творение одного гуру:
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 |
Member
|
Цитата:
Сообщение от EVGL
...
Они, британцы, к этому серьезно относятся. В одном решении, которое адаптировали для англичан, пришлось поменять всех "vendors" на "suppliers", "production order" на "works order", "inventory" на "stock". ...
__________________
С уважением, glibs® |
|
06.03.2007, 09:47 | #16 |
Участник
|
Вероятно человек боялся что код запустят в полночь....
|
|
06.03.2007, 10:58 | #17 |
Banned
|
Да, наверное. Но даже в этом случае хватило бы одного if(). Интересно, если Аксапта исполняет две строчки кода за, скажем, 2 микросекунды, то какова вероятность наступления полуночи за этот промежуток времени?
2 E(-6) / 3600 / 24 ~ 1,5 E(-10) Неплохо. Кроме того, выход из процедуры, скорее всего, занимает большее время, чем исполнение цикла. Осталось выяснить, для какой прикладной задачи потребовалась столь дьявольская точность. |
|
06.03.2007, 10:58 | #18 |
Участник
|
Неа. Без долей секунды полночь.
Дату можно получить в предыдущем дне, а время уже в следующем. В результате отстанем не сутки. PS Вероятность одновременно написать ответ намного выше
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 06.03.2007 в 11:03. |
|
06.03.2007, 11:27 | #19 |
Участник
|
|
|
06.03.2007, 17:53 | #20 |
Banned
|
Я постарался улучшить код, избавив его от указанных недостатков.
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]; } P.S. Исправил: надо было успользовать функцию GetLocalTime вместо GetSystemTime. Как нетрудно видеть, код в итоге стал не менее компактным, зато более доступным и понятным. Последний раз редактировалось EVGL; 06.03.2007 в 18:03. |
|