Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.05;
Скачать: CL | DM;

Вниз

Работа с датой   Найти похожие ветки 

 
AleksandrR ©   (2007-07-10 14:18) [0]

Написал программу и на эту программу поставил защиту (проверка ключа) т.е без ключа программа расчитана на 30 запусков, а теперь я хочу сделать следующее: при первом запуске считывается дата и записывается например в ini файл. Затем при следующем запуске эта дата сравнивается с системной и если она больше 30 дней то программа вырубается. Теперь вопрос как осуществить саму математику с датой, т.е. (дата системная - дата начальная).
Заранее благодарен. С уважением Aleksandr!


 
Ega23 ©   (2007-07-10 14:45) [1]

Воспользоваться функцией IncDay:


function TfmMain.IncDay(const DateTime: TDateTime;  NumberOfDays: Integer): TDateTime;
{Функция предназначена для изменения даты (DateTime) путем добавления  количества дней (NumberOfDays). Значение NumberOfDays может быть отрицательным.}
var
 Y, M, D, CountDays: Word;
 N: Integer;
 Sign, NoBreak: Boolean;
begin
 Sign := NumberOfDays >= 0;
 DecodeDate(DateTime, Y, M, D);
 N := NumberOfDays;
 NoBreak := True;
 if Sign then   //Прибавить
 begin
   while(NoBreak) do
   begin //Количество дней в месяце
     CountDays := MonthDays[IsLeapYear(Y), M];
     if (N + D) <= CountDays then //Если в пределах данного месяца
     begin
       Inc(D, N);
       NoBreak := False;
     end
     else
     begin
       if M < 12 then
         Inc(M, 1)
       else
       begin
         M := 1;
         Inc(Y, 1);
       end;
       N := N - (CountDays - D);
       D := 0;
     end;
   end;
 end
 else  //Отнять
 begin
   N := -N;
   while(NoBreak) do
   begin
     if D > N then  //Если в пределах данного месяца
     begin
       Dec(D, N);
       NoBreak := False;
     end
     else
     begin
       if M > 1 then
         Dec(M, 1)
       else
       begin
         M := 12;
         Dec(Y, 1);
       end;
       //Количество дней в месяце
       CountDays := MonthDays[IsLeapYear(Y), M];
       N := N - D;
       D := CountDays;
     end;
   end;  
 end;
 Result := EncodeDate(Y, M, D);
 //Установить время из старой даты
 ReplaceTime(Result, DateTime);
end;


 
clickmaker ©   (2007-07-10 14:46) [2]

пиши зашифрованной при первом запуске. Если попытаются подменить, сделай, чтоб программа писала "неверный файл ключа" и отваливала


 
Rouse_ ©   (2007-07-10 14:46) [3]

Жжош Легыч :) Небось специально хранил ;)


 
homm_ro   (2007-07-10 14:47) [4]

> [1] Ega23 ©   (10.07.07 14:45)

Епа…
На пхп это одна строка.


 
Ega23 ©   (2007-07-10 14:48) [5]


> Жжош Легыч :) Небось специально хранил ;)


Я такие вещи всегда храню!


 
Ega23 ©   (2007-07-10 14:49) [6]


> homm_ro   (10.07.07 14:47) [4]


Открыть секрет?  :)


 
homm_ro   (2007-07-10 14:49) [7]

Ну да :)


 
Ega23 ©   (2007-07-10 14:51) [8]


> Ну да :)


Почитай хелп по Tdatetime  :)


 
Сергей М. ©   (2007-07-10 15:11) [9]


> как осуществить саму математику с датой


А причем здесь 30 запусков ?


 
Германн ©   (2007-07-10 15:12) [10]


> Rouse_ ©   (10.07.07 14:46) [3]
>
> Жжош Легыч :) Небось специально хранил ;)
>

Да у него небось все стены облеплены подобными перлами. Даже в сортире :)


 
Германн ©   (2007-07-10 15:13) [11]


> Сергей М. ©   (10.07.07 15:11) [9]
>
>
> > как осуществить саму математику с датой
>
>
> А причем здесь 30 запусков ?
>

Следущим будет вопрос: "Как сделать так, чтобы программа запускалась только один раз в день?"
:)


 
Сергей М. ©   (2007-07-10 15:16) [12]


> поставил защиту


Грош цена такой "защите" в базарный день.


 
Anatoly Podgoretsky ©   (2007-07-10 15:45) [13]


> А причем здесь 30 запусков ?

Ни причем, читай внимательно вопрос.
Разница между было и хочу


 
Anatoly Podgoretsky ©   (2007-07-10 15:47) [14]


> Следущим будет вопрос: "Как сделать так, чтобы программа
> запускалась только один раз в день?"

Да пусть немного поразвлекается.

Такая корова нужна самому,
Такую корову не продам никому.


 
Johnmen ©   (2007-07-10 17:13) [15]

Я вот не понимаю, как люди с такими знаниями умудряются писать программы, которые надо защищать?
Или это обыкновенная паранойя?


 
Скарамуш ©   (2007-07-10 19:09) [16]

Не, больше всего мне нравится:

> при первом запуске считывается дата и записывается например
> в ini файл
</
> clickmaker ©   (10.07.07 14:46) [2]
> пиши зашифрованной при первом запуске. Если попытаются подменить,
>  сделай, чтоб программа писала "неверный файл ключа" и отваливала

I>
Взять да и порешить ini-шник, прога не найдёт и создаст новый. С новой датой (Я так понимаю, что прога на FormCreate дату записывать будет? А в таком случае - или ini есть и тогда - считать, или - нет, и тогда - создать.) Тогда уж лучше в реестр.
Кстати, через реестр - тоже чушь, если уж ini лезть, который х.з. где запрятан может быть, то реестр уж почистить по дате - милое дело...
Как хорошо раньше вот так шареварные проги и прописывались простенько в реестр, без всяких там хитростей... Крассотищща!


 
Ega23 ©   (2007-07-10 19:14) [17]


> Как хорошо раньше вот так шареварные проги и прописывались
> простенько в реестр, без всяких там хитростей... Крассотищща!


Дату сместить можно. Да и не обязательно дату писать. В смысле, как datetime.
Наизголяться можно по самое нехочу.
Вот только может и не быть прав на запись в реестр...  :)



Страницы: 1 вся ветка

Текущий архив: 2007.08.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
15-1183701777
D.T.
2007-07-06 10:02
2007.08.05
Редактор моделей


15-1184069229
Вася Правильный
2007-07-10 16:07
2007.08.05
и мыло несуществующее у того варвара :(


2-1183989923
gentos
2007-07-09 18:05
2007.08.05
QReport


2-1183798091
Maxoglot
2007-07-07 12:48
2007.08.05
Сортировка вещественных чисел


6-1166809548
XfroSt
2006-12-22 20:45
2007.08.05
IndyUDPServer и несколько интерфейсов