Tarih Kısıtlaması !!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Tarih Kısıtlaması !!!

Mesaj gönderen ozcank »

Arkadaşlar;
Programa mesela 01/01/2006 ya geldiği zaman kullanım süresi doldu diyecek ve tarihi ileri veya geri yada aynı tarihte iken program çalışmayacak böyle birşeyi nasıl yapabilirim?
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

program ilk çalıştığında regedit e biyerle o an ki tarihi yazıp, o tarih le programın çalıştığı her tarih arasındaki farkı kontrol edebilirsin ama çok güvenli sayılmaz. bunun yerine eğer veritabanı kullanıyorsan kayıt sınırlaması koyabilirsin.
DeveloperToolKit

..::|YeşilMavi|::..
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

sonra onu nasıl acacam ?
bir kod varmı yardım edebilirmisin?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@lazio güzel öneride bulunmuş.

- Güvenlik adına hiç bir kodun tam çözüm olmadığı konusunda hepimiz hemfikiriz. 8) Amaç her önüne gelen geçemesin ortamını sağlamak diyelim.

- Sistemi şöyle kur. Program her açılışında sistem tarihine baksın ve 01/01/2006 olduğunda Registry'ye bir kod düşsün. Bu bağımsız bir blok.

- Takip eden blokta Registry'de kod var mı diye bakılsın. Varsa Demo süresi dolmuş mesajı verdirirsin.

- System tarihi geri bile alınsa kod registry'de kalacağından hep Demo süresi dolmuş şeklinde bir mesaj vermeyi sürdürmüş olursun.
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

nasıl yapacağıma dair kod yazabilirseniz çok sevinirim.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

// Yaz
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  sWrite : String;
begin
  sWrite := 'Değer';
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKey_Local_Machine;
    if Reg.OpenKey('\SOFTWARE\Dizin', True) then
    begin
      Reg.WriteString('Anahtar', 'Değer');
      Reg.CloseKey;
    end
    else
      ShowMessage('Anahtar Oluşturulamadı !');
  finally
    Reg.Free;
  end;
end;

// Oku
procedure TForm1.Button2Click(Sender: TObject);
var
  Reg: TRegistry;
  sRead : String;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKey_Local_Machine;
    if not Reg.OpenKey('\SOFTWARE\Dizin', False) then
      ShowMessage('Anahtar Bulunamadı !')
    else
    begin
      sRead := Reg.ReadString('Anahtar');
      Reg.CloseKey;
      ShowMessage(sRead);
    end;
  finally
    Reg.Free;
  end;
end;
ama daha öncede söylediğim gibi güvenli değil..
DeveloperToolKit

..::|YeşilMavi|::..
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Buttona bağlamadan kullanıcının haberi olmadan bu kodu kullanamazmıyım?
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

FormCreate olayına yazarsan form açıldığında sorar. Gnelde form.show olayına bu kodu yazarlar. Splashscreen olayına. Pack olayına girmezsen bu seferde bi kaç program aracılığı ile programını kırarlar..
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

[Error] Unit1.pas(28): Undeclared identifier: 'TRegistry'
[Error] Unit1.pas(32): Missing operator or semicolon hata veriyor
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

uses a Registry unit ini ekle :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

çalıştırdım ama birşey anlamadım açıklama yaparsanız çok yardımçı olacaksınız?
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

başlat -> çalışıtır da regedit deyim açılan pencereden,
HKEY_LOCAL_MACHINE\SOFTWARE\Dizin diye bir klasör göreceksin, bu klasöre tıkla, sağ tarafta Anahtar isimli bir key göreceksin. işte onun içinde senin yazacağın tarih olacak.
DeveloperToolKit

..::|YeşilMavi|::..
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Aslında şöyle birşey yapmak istiyorum Programın içerisinde bir değer atarak mesela ;


SONTARIH:='01/01/2006';

bu tarih geldiği zaman geri veya ileri yada o tarih üzerindeyken program çalışmayacak 'GÜNCELLEME TARİHİNİZ GELMİŞTİR YAZILIMCINIZI ARAYINIZ PROGRAMINIZ HİÇBİR ŞEKİLDE ÇALIŞMAYACAKTIR !!' şeklinde bir mesaj verecek bende Update ile tarihi değiştirerek müşteriye gönderecem içinde yeni tarih olacak '01/01/2007' gibi .

Bu şekilde yardımcı olursanız daha çok sevinirim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Zaten bunu yapacaksın.

- Sana bahsedilmeye çalışılan konu, ilk sorduğun sordaki kilit mekanizması, yani system tarihi geriye alındığında programının tekrar çalışmaya dönmemesi...

- Şimdi sana yeni bir proje verelim. Bu aşamaları geçersen kendine oldukça faydası olacak. Forumda arama yaparsan bunu cevabını bulacaksın... :idea:

- Windows Registry'de

1. HKEY_LOCAL_MACHINE\SOFTWARE dalını kullanarak ozcank adında bir Anahtar oluştur.

2. Bu anahtar içine Durum adındaki bir dize değeri oluştur.

3. Durum dize değerine '1' ifadesini yazıdır.

4. Programa bir de Registry'de aynı dalda varsa bu değeri okuyan bir button hazırla.

5. Yazdığın değeri okuyup ekrana yansıt.

- Bu işlemleri gerçekleştirdiğinde emin ol sormak istediğin kontrolü yapacaksın.
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Ben yeni proje istemedim ki sadece soruma cevap arıyorum.
Cevapla