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.
Kullanıcı Adı Parola HK.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Kullanıcı Adı Parola HK.
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:
şeklinde tanımlanmış değişkenleri
ş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;
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:
Ö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;
Kod: Tümünü seç
Ara: Boolean;
Mesaj: Word;
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]),[])
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;