Kullanıcı Adı Parola HK.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bestofhoke
Üye
Mesajlar: 30
Kayıt: 14 Mar 2017 04:01

Kullanıcı Adı Parola HK.

Mesaj gönderen bestofhoke »

Merhabalar,
Ufak çaplı bir program üzerinde uğraşıyorum bir yerde takıldım yardımcı olabilir misiniz?
delphi 7 de parodox 7 veritabanı kullanıyorum.
programın başlangıcı için kullanıcı adı şifre istesin ancak sadece veritabanında ki kayıtlı kişiler girsin istiyorum bunun için biraz uğraştım ancak hata veriyor!
uyeler isimli tabloda ki kayıtlı kişiler girsin istiyorum onun için giriş butonunun click olayına şu kodu yazdım ekran görüntüsünüde yüklüyorum..
Yardımlarınız için teşekkür ederim...
16.Satırda if kısmında hata gösteriyor-> if ara Then

----KOD
procedure Tsistemegirispaneli.Button1Click(Sender: TObject);
var
ara:Boolean;
mesaj:Word;
begin
if (kullaniciadi.Text='') or (parola.Text='') then
begin
mesaj:=Application.MessageBox('Lütfen Alanı Boş Bırakmayınız!','Uyarı',mb_OK);
kullaniciadi.Text:='';
parola.Text:='';
kullaniciadi.SetFocus;
end
else
begin
ara:=uyeislemleri.Table1.Locate('Kullanici_Adi;Kullanici_Parola',varArrayOf ([kullaniciadi.Text,parola.Text]),[])
if ara Then
begin
uyeislemleri.Show;
sistemegirispaneli.hide;
end
else
begin
mesaj:=Application.MessageBox('Kullanıcı Adı ve ya Parola Hatalı!','Uyarı',mb_OK);
kullaniciadi.Text:='';
parola.Text:='';
kullaniciadi.setfocus;
end;
end;
end;
end.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Kullanıcı Adı Parola HK.

Mesaj gönderen ertank »

Merhaba,

Öncelikle forum içinde bir kod paylaşacağınız zaman "[ code ]" ve "[ /code ]" ifadeleri arasında yazmanızda fayda var. Bu şekilde olduğu zaman okuması daha kolay olur.

A) Paradox veri tabanı yaklaşık 10 senedir desteklenmeyen bir veri tabanıdır. Çoklu kullanıcı desteği limitlidir. Bunun yerine ücretsiz ve çok daha kabiliyetli SQL desteği çok daha iyi olan bir veri tabanı kullanmanızda fayda var. Bunlardan en bilinenleri;
- SQL Server Express (Son sürümlerini 10GB database boyutuna kadar kullanabilirsiniz)
- FirebirdSQL Server tamamen ücretsizdir.
- PostgreSQL Server tamamen ücretsizdir.
- MySQL Server Community Edition ücretsizdir.
B) Hata mesajı geçen kod örneğinin yanında hata mesajının kendisini de paylaşmanız çok faydalı olacaktır.

C) Gönderdiğiniz kod ile ilgili bazı noktalara dikkat etmenizde fayda var:
1) Değişken isimlerini her ne kadar programcı dilediği gibi tanımlayabiliyor olsa da programlama dilinin kabul görmüş bazı kullanım şekillerine uymakta fayda var. Pascal için değişken isimleri genellikle Pascal Notation veya CamelCase olarak bilinen kelimelerin ilk harfi büyük olacak şekilde tanımlamanızda fayda var. Gönderdiğiniz kod örneğinde:

Kod: Tümünü seç

ara:Boolean;
mesaj:Word;
şeklinde tanımlanmış değişkenleri

Kod: Tümünü seç

Ara: Boolean;
Mesaj: Word;
şeklinde tanımlayabilirsiniz.

2) Noktalama işaretlerinden sonra bir boşuk bırakmanızda, değişkenlere değer atamada := işaretinden önce ve sonra bir boşluk bırakmanızda fayda var.
3) Blok olarak tabir edilen begin..end, try..except..end, ifadelerinin arasında kalan kodları en az iki boşluk içeriden yazarak blokları ve kodun genelini daha kolay okunabilir hale getirebilirsiniz. Sizin paylaştığınız kod içinde blok başlangıç ve bitişleri net olarak belli değil.

Eğer bunları hatırlaması zor olur diyor iseniz Delphi içinde CTRL+D tuşuna basarak Delphi'nin kodu otomatik olarak bu şekilde düzenlemesini sağlamanız mümkün olabilir.

D) Sorunuza gelince;

Kod: Tümünü seç

ara:=uyeislemleri.Table1.Locate('Kullanici_Adi;Kullanici_Parola',varArrayOf ([kullaniciadi.Text,parola.Text]),[])
ifadesinin sonundaki noktalı virgül karakterini yazmadığınız için derleyici hata veriyor olabilir. Eğer hata kodunu paylaşmış olsaydınız kesin veya yüksek ihtimalle sorunu tespit etmek mümkün olabilirdi.

E) Yukarıda bahsedilen düzenlemeler yapıldığı zaman paylaştığınız kod aşağıdaki gibi olacaktır:

Kod: Tümünü seç

procedure TSistemeGirisPaneli.Button1Click(Sender: TObject);
var
  Ara: Boolean;
  // Mesaj: Word; // Geriye gelen cevabı kullanmayacak isek bu değişkeni tanımlamamız gerekmez.
begin
  if (KullaniciAdi.Text = EmptyStr) or (Parola.Text = EmptyStr) then
  begin
    Application.MessageBox('Lütfen Alanı Boş Bırakmayınız!', 'Uyarı', MB_OK);
    // Kullaniciadi.Text := '';  // -- bu koda gerek yok. Zaten yukarıda if ile kontrol ettiğimiz durumun aynısı.
    // Parola.Text := '';        // -- bu koda gerek yok. Zaten yukarıda if ile kontrol ettiğimiz durumun aynısı.
    KullaniciAdi.SetFocus();
  end
  else
  begin
    Ara := UyeIslemleri.Table1.Locate('Kullanici_Adi;Kullanici_Parola', VarArrayOf([KullaniciAdi.Text, Parola.Text]), []);
    if Ara Then
    begin
      UyeIslemleri.Show();
      SistemeGirisPaneli.Hide();
    end
    else
    begin
      Application.MessageBox('Kullanıcı Adı ve ya Parola Hatalı!', 'Uyarı', MB_OK);
      KullaniciAdi.Text := EmptyStr;
      Parola.Text := EmptyStr;
      KullaniciAdi.SetFocus();
    end;
  end;
end;
Cevapla