Uyuyamıyorum

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
erdalyalcin
18-11-2005, 04:01   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
7 mesaj
Kayıt Tarihi:Kayıt: Tem 2005

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]SoruSoruSoru[:I][:I]

digidifi
19-11-2005, 16:36   |  #2  
Yeni Üye
Teşekkür Sayısı: 0
37 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

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;

developer
20-11-2005, 09:53   |  #3  
Yeni Üye
Teşekkür Sayısı: 0
43 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

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.

digidifi
20-11-2005, 19:06   |  #4  
Yeni Üye
Teşekkür Sayısı: 0
37 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

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?

developer
23-11-2005, 00:20   |  #5  
Yeni Üye
Teşekkür Sayısı: 0
43 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

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.:)

digidifi
23-11-2005, 16:04   |  #6  
Yeni Üye
Teşekkür Sayısı: 0
37 mesaj
Kayıt Tarihi:Kayıt: Kas 2005

Haklısın tabii önemli olan Typical mantık :) evet 4 denemede kapanıyor bu şey :P

devos
21-12-2005, 16:06   |  #7  
Taze Üye
Teşekkür Sayısı: 0
8 mesaj
Kayıt Tarihi:Kayıt: Ara 2005

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 }

Son Düzenleme: devos ~ 21 Aralık 2005 16:12