Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Защита программы льготным периодом работы

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

sunstars

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программа при первом запуске в реестре устанавливает текущую дату. При последующих запусках проверяет не истёк ли срок её работы. Первый раз программа отрабатывает нормально, а при последующих спотыкается на строке №33 CString s0 = r_t.Format("%A, %B %d, %Y") из-за некоректного указателя. Не могу понять почему.

Код:
#include <Windows.h>
#include <stdio.h>
#include <conio.h>
#include <atltime.h>
#include <atlstr.h>
 
int main()
{
    HKEY hKey;
    DWORD res;
    DWORD TYPE;
 
    printf("Demo \n");
    if(RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\DEMO", 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &res)!=ERROR_SUCCESS)
        return 0;
    if (res == REG_CREATED_NEW_KEY)
    {
        CTime t;
        t = t.GetCurrentTime();
        time_t    t_t = t.GetTime();
        RegSetValueEx(hKey,"",0,REG_DWORD,(CONST BYTE *) &t_t,4);
        printf("Base time have saved! \n");                
    }
    else
    {
        CTime t;
        time_t    t_t,t_c;
        t = t.GetCurrentTime();//Возвращает текущей системной даты и времени в формате UTC.
        t_c = t.GetTime();//GetTime возвращает число секунд между текущим объектом CTime и 1-ое января 1970.
        res=5;            
        RegQueryValueEx(hKey,"",0,&TYPE,(LPBYTE) &t_t,&res);
        CTime r_t(t_t);
        CString s0 = r_t.Format("%A, %B %d, %Y");
        printf( "Base time is  %s\n",s0  );
        t_t = t_t >> 0xF; t_c = t_c >> 0xF; t_c -= t_t;
        printf ("%d  Day left \n",20 - t_c);
        if (t_c<20)  
        {
            printf("Working... \n\n");
        }
        else
        {
            printf("Abort! \x7 \n\n");                    
        }
    }
    RegCloseKey(hKey);
 
    _getch();
    return 0;
}

 
Добавлено:
в строке №32 правим
Код:
CTime r_t(t_c);
и всё работает

Всего записей: 22 | Зарегистр. 06-01-2016 | Отправлено: 18:59 17-01-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Защита программы льготным периодом работы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru