demo oluşturma???
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
demo oluşturma???
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...
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...
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
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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
mehaba ,
@Kuri_YJ
#IFDEF olayını biraz açabilirmisin ilgimi çekti.
Teşekkürler.
@Kuri_YJ
#IFDEF olayını biraz açabilirmisin ilgimi çekti.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Selamlar,
Önce yanlış yazmışım (Clippera kaydı biraz yazma stilim
)
Ş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,
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
Önce yanlış yazmışım (Clippera kaydı biraz yazma stilim

Kod: Tümünü seç
{$IFDEF Direktif}
{$ELSE} veya {$ELSEIF Şart}
{$ENDIF}
Ö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}
.
.
.
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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
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
Ş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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
@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.
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
www.polisoft.com.tr
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.
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.
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;
Şimdi biraz daha düzenlenmiş hali,
Nasıl daha okunaklı olmadı mı?
Kolay Gelsin
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.
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.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
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.
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
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
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}
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}
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

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 !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Eline sağlık Freeman'ım herbişeyim 

Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
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
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/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/