(MS Visual)
1. Почему release и debug дают разные результаты?
2. В строке помеченной коммент. [1] проверяю, не передали ли нулевые значения структуры check, если да, то ответ положительный, но при передачи обнуленной структуры в этот параметр в LI_check.QuadPart получается вовсе не 0, почему?
3. Спасибо.
bool IsActualTime(const SYSTEMTIME &check, const SYSTEMTIME &now)
{
FILETIME ft_check, ft_now;
ULARGE_INTEGER LI_check, LI_now;
SystemTimeToFileTime(&check, &ft_check); // check SYSTEMTIME -> FILETIME
LI_check.HighPart = ft_check.dwHighDateTime; // check FILETIME -> ULARGE_INTEGER
LI_check.LowPart = ft_check.dwLowDateTime; // check FILETIME -> ULARGE_INTEGER
SystemTimeToFileTime(&now, &ft_now); // current SYSTEMTIME -> FILETIME
LI_now.HighPart = ft_now.dwHighDateTime; // current FILETIME -> ULARGE_INTEGER
LI_now.LowPart = ft_now.dwLowDateTime; // current FILETIME -> ULARGE_INTEGER
if ( static_cast<ULONGLONG>(0) == LI_check.QuadPart) // [1]
return true;
if (LI_check.QuadPart > LI_now.QuadPart)
return true;
return false;
}
void main()
{
SYSTEMTIME st1 = {};
SYSTEMTIME st2;
GetSystemTime(&st2);
Sleep(100);
//GetSystemTime(&st1);
printf("\n[1-st]: [%.2u:%.2u:%.2u.%.2u]", st1.wHour, st1.wMinute, st1.wSecond, st1.wMilliseconds);
printf("\n[2-st]: [%.2u:%.2u:%.2u.%.2u]", st2.wHour, st2.wMinute, st2.wSecond, st2.wMilliseconds);
printf("\n");
printf( "\n[1-st] > [2-st] = [%s]", IsActualTime(st1, st2) ? "true" : "false" );
printf("\n");
}