arkadaşlar uzun süredir delphi kullanıyorum!Fakat şuanda 3 kere yanlış girilen şifrenden sonra programı kaptan programı yapamadım!!! :( iş tamamen inada bindi!!!bana şuanda yardım edebilecek biri var mı?
sabah çok geç olabilir!!! :)))[V][:I][:I]
Uyuyamıyorum
Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.if sifre=Edit1.Text then
begin
Form1.Hide;
Form2.Show;
end Else Begin
hak:=hak+1;
Showmessage('Hatalı şifre !!!');
Edit1.Clear;
if hak>3 then
Begin
Showmessage('Malesef Hakkınız doldu.');
Form2.Close;
end;
sevgili digidifi kardeşim bu 5. sefer yanlış girildiği zaman kapanır
Programlama Dilleri Biz İnsanlar gibi saymaya 1 den değilde 0 dan başlar.Arkadaşımız Sağolsun Kodları yazmış Düzelteme Yapacağım Yer Sadece Şurası
if hak>3 yerine if hak = 2 olması lazım diye düşünüyorum.
Kolay Gelsin.
Derleyiciyi açıp test etmedim ama yazdığım kodların yanlış olduğunu düşünmüyorum. Gerçi bir iki "end;" eksik yazmışım, değişken tanımlamalarını falanda yapmadım ama idare edin. :P
"hak" değişkenin ilk değerini 0 olarak "var" bloğunun altında tanımlarsak, kullanıcının yaptığı ilk hatalı denemede hak değişkenin değeri 1 olur.ikinci denemede 2 ve üçüncü denemede 3, dördüncü denemede ise form kapanır. Yani benim yazdığım "if hak>3" doğru gibi geldi. Yani burda önemli olan hak değişkenin ilk değeri. Bilgisayarın sayı saymaya nereden başladığını ,zaten biz ona en başta söylediğimiz için, bir önemi kalmıyor. Siz ne dersiniz?
if hak>3 then eğer hak değeri 3ten büyük olursa şunu yap demek ilk denemede hak değeri 0 dan 1 e ikinci denemede 1 den 2 ye üçüncü denemede 2 den 3 e dördüncü denemede ise 3 ten dörde geçer ve hak>3 önermesi doğru olur. ben de yanlış saymışım 4. denemede kapanıyor onu ya hak = 3 yada hak >2 yapmak gerekiyor. ha Eğer Hak değerinin başlangıç sayısını belirtirsek Dediğin gibi olur ama sen yukarıdaki kod bloğuna oyle birşey yazmamışsın bende onun için soyledim aslında Soruyu soran arkadaşın cevabı orada bir hata yok alınması gereken Typical programlama mantığı biz sadece değer üzerinde tartışıyoruz.:)
Haklısın tabii önemli olan Typical mantık :) evet 4 denemede kapanıyor bu şey :P
begin
sifre:='deneme';
if sifre = edit1.text then
begin
Showmessage('Şifre doğru.');
//Form1.Hide;
//Form2.Show;
end Else Begin
hak:=hak+1;
Showmessage('Hatalı şifre !!!');
Edit1.Clear;
end;
if hak>2 then
Begin
edit1.Text:=inttostr(hak);
Showmessage('Malesef Hakkınız doldu.');
Form2.Close;
end;
end;
Yapamamanın en büyük sebebi Aynı procedure'de tanımları yapmandır. Tanımlamaları Public kısmında yap. Verdiğim kod aynen çalışıyor. Bir editbox ve bir buton var formda Dediğim gibi "hak" ve "sifre" değişkenlerini Public de tanımla.
public
sifre: string;
hak: integer;
{ Public declarations }