Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > системная дата?


Автор: lkan 3.3.2006, 08:59
доброго времени суток, мастера.вопрос такой:требуется ч/з 30 дн. удалить приложение. как вычислить эти 30 дн. ведь системную дату можно переставить?(winXP,d7)


Автор: Snowy 3.3.2006, 09:38
Фиксируй дни. В реестре или файле.
Как только дата не равна предыдущей - увеличивай счетчик.

Автор: lkan 3.3.2006, 09:58
а дни считать отдельной прогой, которая будет висеть постояно?

Автор: Snowy 3.3.2006, 10:12
Зачем же? Можно из своей.
А еще есть очень простой способ, как узнать текущую дату, не глядя системное время.
Делаешь поиск по каталогу %WINDIR% и ищешь файл с наибольшей датой.
Как правило это будет свеженький log файл.
Вот его дата и будет сегодняшней.

Автор: Guedda 3.3.2006, 10:15
Вот тебе обработчик OnCreate:
Код

uses
  ..., Registry;

procedure TForm1.FormCreate(Sender : TObject);
var
  Reg : TRegistry;
  CurDate : TDateTime;
  i : Integer;
begin
  Reg := TRegsitry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE; //выбираем ветку
  Reg.OpenKey('Software\MyProg\Count'); //открываем папку твое программы
  if not Reg.ValueExists('Date') then //если даты нет, то создаем ее
  begin
    Reg.WriteDate('Date', Now);
    Exit;  //...и выходим
  end else begin
    CurDate := Reg.ReadDate('Date'); //считываем дату в реестре
    if CurDate <> Now then begin  //если дата не равна сегодняшней, то
      if not Reg.ValueExists('Count') then //если не существует запись Count, то
      begin
        Reg.WriteInteger('Count', 1); //записываем туда 1 день
      end else begin  //иначе
        i := Reg.ReadInteger('Count'); //считываем Count 
        if i=30 then begin //если Count - 30 дней, то
          ShowMessage('Срок программы истек');
          Reg.CloseKey; Reg.Free; 
          Close; //все...
        end;
        Inc(i);//Добавляем к дням еще один
        Reg.WriteInteger('Count', i); //и записываем его туда же :)
      end;
    end;
  end;
  Reg.CloseKey;
  Reg.Free;//завершаем работу скрипта
end;


Пользуйся на здоровье

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)