почему release и debug дают разные результаты?
От: Аноним  
Дата: 01.02.08 16:17
Оценка:
(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");
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.