|
06.03.2007, 17:53 | #1 |
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. |
|