demo oluşturma???

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
mumati
Üye
Mesajlar: 3
Kayıt: 30 Kas 2005 02:54

demo oluşturma???

Mesaj gönderen mumati »

arkadaşlar delphi 7 kullanarak bir program hazırladım.

saat ve tarihe duyarlı bir demo hazırlamak için ne gibi yontemler var,
yani cok onemli bişey yapmıyacam yani guvenlik 1. planda degil.
buna gore bir yol gosterebilirmisiniz...

şimdiden teşekkürler...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Eğer çok da önem vermiyorsanız Programın belli noktalarına, Tarih ve Saati Kontrol eden küçük kodlar yazın , eğer tarih Demo tarihi olarak belirlediğiniz tarihi geçmişse programdan kendini Atsın.

Programın açılışında kontrol ettirebilirsiniz, bir de herhangi bir kayıt yaparken kontrol ettirirsiniz Baktınız tarih geçmiş, işlemi yapmazsını veya programdan çıkarsınız.

Tabi bu en basit yöntemlerden biri. Bunu da çok rahat kırarlar ama olsun en azından elinde demo olur.

Bir başka yöntemde #IFDEF ler ile source bazında Demo için özel eksikler bırakarak derlemek.

Örneğin Kayıt etme kısımlarını #IFDEF kullanarak blok içine alırsınız ve derlemenizi buna göre yaparsınız, Normal Sürüm ile Demo Sürümlerini farklı derleyerek farklı EXE'ler oluşturursunuz.

Böylelikle kırılma ihtimali de zayıflar.

Daha bir sürü yöntem var ama bunlar en başlıcaları ve kolay olanları. Bunun yanında TurboPower bileşenlerini kullanarak ta çeşitlemeler yapabilirsiniz. Turbo Power bileşenleri ücretsizdir. Sitede olması lazım.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
mumati
Üye
Mesajlar: 3
Kayıt: 30 Kas 2005 02:54

Mesaj gönderen mumati »

Turbo Power yontemi hakkında bilgi verebilirmisiniz,
bi de o tarih kontrolleri hakkında ornek kod varsa iyi olur
delphide daha yeniyim cok bi bilgim yok
basit bi veritabanlı program yazdım bu konu hakkında bilgi edinmek istiyorum.
tesekkurler...
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

mehaba ,
@Kuri_YJ
#IFDEF olayını biraz açabilirmisin ilgimi çekti.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Önce yanlış yazmışım (Clippera kaydı biraz yazma stilim :) )

Kod: Tümünü seç

{$IFDEF Direktif}

{$ELSE} veya {$ELSEIF Şart}

{$ENDIF}
Şeklinde kullanılıyor. Bununla kaynak kodunuzu çeşitli derleme yöntemleri ile derleyip, oluşan EXE'yi farklı yapabiliyorsunuz.

Örneğin bir derleme parametreniz var ve bu DEMO olsun. Programınızı yazarken,

Kod: Tümünü seç

  .
  .
  .
  {$IFDEF DEMO}
    ShowMessage('Demo Versiyonda Bilmem Ne İşlemi Yapılamaz !...) ;
  {$ELSE}
    BilmemNeIslemiYap ;
  {$ENDIF}
  .
  .
  .
gibi bir de kaynak kodumuz olduğunu varsayalım. Derleme işleminde Project/Options'dan Directories/Conditionals tabından alt bölümde Conditionals : diye bir bölüm var oraya DEMO yazarak Programınızı Derlerseniz veya Build ederseniz yukarıda yazdığımız satıra geldiğinde program ShowMessage satırını işletir. Eğer DEMO yerine ASIL diye bir şey yazarsak (bu benim verdiğim örnekler at kafadan örnekler. Siz istediğinizi verebilirsiniz) bu şekilde derlersek program $IFDEF yazılı satıra geldiğnde BilmemNeIslemiYap ; Procedurene dallanır.

Bilmam anlatabildim mi.

Bu çok işe yarar bir şeydir, zira oluşan EXE verilen direktife göre farklı hale geçiyor. Yani sizin özel yaptığınız şeyleri Sanki remarklamışsınız gibi program atlıyor (Yani EXE'ye dahil etmiyor.


Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Turbo Power Yönetmi diye bir şey yok, Turbo Power Bileşenleri var. Bunları kullanarak bir takım kısıtlar ve engeller koyabilirsiniz. Bu koyacağınız kısıtlar ve kontroller daha sağlam olabilir. Harddisk SeriNo, BIOS bilgileri, Network MacAddressi gibi bir takım donanıma ait bilgilerden elde edeceğiniz bir yöntem ile de yapabilirsiniz demek istedim.

Şimdi öncelikli olarak Turbo Power bileşenlerini indirin ve kurun, demolarına bakın. En güzel öğrenme metodudur (Bizim insanımız için) orada örnekleri olması lazım. dokumanları da var zaten.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@Kuri_YJ ,
verdiğiniz çok değerli ve açıklayıcı bilgiler için teşekkürler.
Gerçekten zaman kazandırıcı bir teknik.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
mumati
Üye
Mesajlar: 3
Kayıt: 30 Kas 2005 02:54

Mesaj gönderen mumati »

kısıtlama yapmak yerine giriş sayısına limit koyma işini düşündüm
sole bişey elime geçti.
ini dosyası oluşturup bunun içinde sayma yapacak ve sınıra gelince işlem tamam deyip bitirecek bi program bu.

yalnız programda sole bi hata veriyor :

undeclared identifier : 'Tinifile'

burdaki sorun nasıl çözülür...

yardımlarınızı bekliyorum, teşekkürler....

procedure TForm1.FormCreate(Sender: TObject);
var ini:Tinifile;sayac:integer;x:string;
begin
x:='c:\deneme.ini';
ini:=Tinifile.Create(x);
try
sayac:=ini.Readinteger('program','sayac',0);
showmessage('sayac='+inttostr(sayac));
inc(sayac);
if sayac>10 then
begin
showmessage('programı kullanım hakkınız dolmuştur');
halt;
end;
ini.writeinteger('program','sayac',sayac);
finally
ini.Free;
end;
end;

end.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

mumati yazdı: yalnız programda sole bi hata veriyor :

undeclared identifier : 'Tinifile'

burdaki sorun nasıl çözülür...
uses IniFiles ekleyerek.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Madem yeni başladınız o zaman Blok Programalama konusuna ve yazım düzenlemesi konusuna da özen gösterin derim. Zira yazdığınız kodlar 15-20 satırken problem yok da 1500-2000 satırlara vardığında güçlük çekersiniz.

Bir de mesaj yazarken kaynak kod göndereceğiniz zaman Code yazan butona tıklayın, kodunuzu oradan sonra yapıştırın ve sonra tekrar Code yazan butona tıklayın. Böylelikle kod kısmı, mesajınızda ayrı bir şekilde görülsün.

Sizin için yazdığınız kodu, biraz düzneledim.

Önce sizin yazdığınız;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
var ini:Tinifile;sayac:integer;x:string;
begin
x:='c:\deneme.ini';
ini:=Tinifile.Create(x);
try
sayac:=ini.Readinteger('program','sayac',0);
showmessage('sayac='+inttostr(sayac));
inc(sayac);
if sayac>10 then
begin
showmessage('programı kullanım hakkınız dolmuştur');
halt;
end;
ini.writeinteger('program','sayac',sayac);
finally
ini.Free;
end;
end;

end.
Şimdi biraz daha düzenlenmiş hali,

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
var 
  ini : Tinifile;
  sayac : integer;
  x : string;
begin
  x := 'c:\deneme.ini';
  ini := Tinifile.Create(x);
  try
    sayac := ini.Readinteger('program','sayac',0);
    showmessage('sayac='+inttostr(sayac));
    inc(sayac);
    if sayac>10 then
    begin
      showmessage('programı kullanım hakkınız dolmuştur');
      halt;
    end;
    ini.writeinteger('program','sayac',sayac);
  finally
    ini.Free;
  end;
end;

end.
Nasıl daha okunaklı olmadı mı?

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2384
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Yurdum cedayının yazdıklarına ilave edeyim
bu IFDEF e compiler direktif leri deniyor. Yani yazdığınız text halindeki kod, makine diline çevrilirken yön veriliyor.

Kod: Tümünü seç

{$IFDEF DEMO}
    ShowMessage('Demo Versiyonda Bilmem Ne İşlemi Yapılamaz !...) ;
  {$ELSE}
    BilmemNeIslemiYap;
  {$ENDIF} 
bunu projenin içine copy paste edin, compile ettiğinizde "BilmemNeIslemiYap;" tanımlanmamış hatası alırsınız

unit in üst kısımlarında bir yere geneldeüstteki uses ın altına eklenir

Kod: Tümünü seç

uses ......
{$DEFINE DEMO}
........
............
{$IFDEF DEMO}
    ShowMessage('Demo Versiyonda Bilmem Ne İşlemi Yapılamaz !...) ;
  {$ELSE}
    BilmemNeIslemiYap;
  {$ENDIF} 
ozaman "BilmemNeIslemiYap;" tanımlanmamış hatası almazsınız sebebi kod compile edilirken koşulu sağlamayan kod kısmı işlenmez çıkarılır.

Son seminerde anlatmıştım, componentların içinde genellikle {$I xxxx.inc} diye bir direktif vardır. bunun anlamı şu. verilen direktifler sadece o unit içinde kullanılabilinir. Yani kullanmak istediğiniz {$DEFINE DEMO} kullanılacak her unit te olmalı. bunun kolayı ve parametrik hali şudur. $I direktifi ile belirtilen dosya {$I xxxx.inc} yazının olduğu yere sanki copy-paste edilmiş gibi davranılır. ".INC" uzantısı zorunlu değildir, pascal editöründen kalma alışkanlık :) Included yani eklenti anlamına gelir. adı geçen dosyadaki tüm kodlar merge edilir. Bunun sağladığı fayda şu {$DEFINE DEMO} ibaresini "xxxx.inc" içine koyup {$IFDEF DEMO} yu kullanma istediğiniz her unit içine {$I xxxx.inc} ekleyin. daha sonra projeyi compile ettiğinizde proje demo olacak. aksi içinse sadece xxxx.inc içindeki {$DEFINE DEMO} ibaresini değiştirmeniz yada silmeniz ({.$DEFINE DEMO} direktif değil artık remark olmuştur) ve tekrar compile etmeniz demo modundan çıkaracaktır.

Kolay gele
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 !!!
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Eline sağlık Freeman'ım herbişeyim :)
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Ek bir yöntem ise Project > Options... > Directories / Conditional 'dan giderek "Conditional Defines" alanına DEMO yazmak. O zaman her ünitede {$DEFINE DEMO} yazmanıza gerek kalmaz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

t-hex Senin de eline sağlık.

Japonun biri bir konuşmada şöyle demişti. "Siz Türklerin Büyük Adamların Atatürk, çok doğru söylemiş. Bir Türk dünyaya Bedel. Ancak 2 Türk dedin mi bu biraz zor"

Bizim takım çalışmasından anlamadığımızı söylüyordu. Buradan görülüyor ki bir şeyleri baya iyi öğreniyoruz ha !!!

Sağolun arkadaşlar, bu bana çok moral oldu !!!

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

abi o japon senin kılıcı görünce yağ çekmiştir.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla