Demo sürüm tarih kontrol

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

Demo sürüm tarih kontrol

Mesaj gönderen dogan »

Merhaba, Yaptığım programa tarihe göre süre vermek istiyorum, fakat kişi bilgisayar tarihini geri alınca belirlediğim tarih yalan oluyor,
bilgisayar tarihini geri alınsa bu kontrolün doğru çalışmasını nasıl engellerim...

procedure TForm1.KontrolClick(Sender: TObject);
begin
if Date > StrToDate('18.08.2015') then
begin
Application.MessageBox(pChar('deneme süresi bitti!'), 'Dikkat!',
MB_Ok or MB_ICONQUESTION);
end
else
begin
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: Demo sürüm tarih kontrol

Mesaj gönderen mehmetantalya »

programin ilk calistigi tarihi bir dosyaya veya register a yazdirin. programin her acilisinda da bu dosyadaki degerle gunun tarihini karsilastirin. gunun tarihi dosyadakinden kucukse tarih degistirilmis demektir. programi actirmazsiniz. eger buyukse yani sonraki gunlerden birine gecilmisse programi calistirirsiniz ve dosyadaki degeri yeni tarih olacak sekilde degistirirsiniz.
tabi kisi ilk gunden itibaren tarihi hep sabit tutarsa. program calistirmadan her defasinda ayni gune ayarlarsa . bu yontem birseye yaramaz
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Demo sürüm tarih kontrol

Mesaj gönderen freeman35 »

http://sourceforge.net/projects/tponguard/
bu component ı incele bence.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
CHack
Üye
Mesajlar: 14
Kayıt: 21 Ağu 2015 12:35

Re: Demo sürüm tarih kontrol

Mesaj gönderen CHack »

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ScktComp, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ClientSocket1: TClientSocket;
    Edit1: TEdit;
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ntohl(const value: cardinal): cardinal;
asm
   mov edx, eax
   mov ecx, eax
   shl ecx, 16
   and eax, $0000ff00
   or eax, ecx
   mov ecx, edx
   shl eax, 8
   and ecx, $00ff0000
   shr edx, 16
   or ecx, edx
   shr ecx, 8
   or eax, ecx
end;

function TimeZoneBias: Double;
var
   ATimeZone: TTimeZoneInformation;
begin
   if (GetTimeZoneInformation(ATimeZone) = TIME_ZONE_ID_DAYLIGHT) then
   begin
     result := ATimeZone.Bias + ATimeZone.DaylightBias;
   end
   else
   begin
     result := ATimeZone.Bias + ATimeZone.StandardBias;
   end;
   Result := Result / 1440;
end;

function SecsToTime(ASecs: Cardinal): TDateTime;
const
   SECS_PER_DAY = 24 * 60 * 60;
   UNIX_OFFSET = 25569;
begin
   Result := ntohl(ASecs) / SECS_PER_DAY + encodedate(1900, 1, 1) - TimeZoneBias;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
   buf: Cardinal;
begin
   Socket.ReceiveBuf(buf, sizeof(buf));
   edit1.Text:=(formatdatetime('dd.mm.yyyy hh:nn:ss', SecsToTime(buf)));
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   ClientSocket1.Host := 'time-A.timefreq.bldrdoc.gov';
   ClientSocket1.Port := 37;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   edit1.Clear;
   ClientSocket1.Open
end;

procedure TForm1.KontrolTimer(Sender: TObject);
begin
   if edit1.Text:=('18.08.2015') then
begin
Application.MessageBox(pChar('deneme süresi bitti!'), 'Dikkat!',
MB_Ok or MB_ICONQUESTION);
end
else
begin
end;
end;

end.
Umarım işine yarar internetden zamanı aldığı için yanıltamazlar.
Cevapla