Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Birden çok şartın sağlanması
#1
Merhaba, yaptığım projelerde bu aralar en çok ihtiyaç duyduğum şeylerden biride , birden çok şartı kontrol etmek ve çıkan sonuca göre boolean değer döndüren prosedür veya fonksiyon hazırlamak..

Örnek olarak bir listbox prosedür veya fonksiyonla denetliyoruz diyelim. 
1) Listbox boşmu.
2) Listoboxta herhangi bir satır seçilimi
3) Seçili olan listboxtaki son üyemi.
4) Listboxtaki sayımı , yazımı.
 
Yukarıdaki seçeneklerin hepsinin true  olduğunu, birkaç iF AND OR kullanarak bulabilir ve fonksiyonumuzun sonucuna true diyebiliriz.
Fakat içlerinden bir veya bir kaçının false olması durumunda işler biraz karışıyor Smile) Birden çok kombinasyon çıktığı için if else yapısıda kendi içinde aynı kombinasyonda çoğalıyor ve if else içinde boğulup gidiyorum. Aynı şey case of yapısında da geçerli.
Peki böyle bir durumda şu sonucu istiyorsak Ne yapmalıyız , doğru yaklaşım nedir, nasıl yapmalıyız...

İstenen sonuç : 
1) Eğer şartların hepsi sağlanmışsa true değer döndür. 
2) Şartlar sağlanmamış ise false döndür ve sebebini belirt. (örneğin listbox boş de)

Bende çıkan sonuc ve hatama göre ,hatamı düzeltecek kodu tekrar çağırayım

Teşekkürler.
Cevapla
#2
Merhaba,

"şartların hepsi doğru mu" kısmını anlayamadım maalesef. Ama eğer fonksiyonda cevap olarak TRUE/FALSE yanında açıklama/hata vb. bilgileride dönmek istiyorsanız OUT parametresini kullanabilirsiniz.

Örnek Kullanım :

http://www.delphibasics.co.uk/RTL.asp?Name=Out

Routine name(... Out OutputVarName : type; ...)
Cevapla
#3
Varsayılan olarak en üste result := '' ; şeklinde string dönüş verseniz olacak gibi.

şartları alt alta if bloklarıyla belirtir, hiç ELSE kullanmadan sorgularsınız. 

THEN 'lerine de result := result + #13 +' şu şu problem var'; dersiniz. 

fonksiyonu değerlendirdiğiniz yerde ise dönen string değer '' şeklinde boş ise sorun yok, dolu ise bir bir veya tüm string dönen ifadeyi mesajla bildirirsiniz. 

En kısa yol bu.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#4
(21-03-2018, Saat: 02:54)Lord_Ares Adlı Kullanıcıdan Alıntı: Merhaba, yaptığım projelerde bu aralar en çok ihtiyaç duyduğum şeylerden biride , birden çok şartı kontrol etmek ve çıkan sonuca göre boolean değer döndüren prosedür veya fonksiyon hazırlamak..

Örnek olarak bir listbox prosedür veya fonksiyonla denetliyoruz diyelim. 
1) Listbox boşmu.
2) Listoboxta herhangi bir satır seçilimi
3) Seçili olan listboxtaki son üyemi.
4) Listboxtaki sayımı , yazımı.
 
Yukarıdaki seçeneklerin hepsinin true  olduğunu, birkaç iF AND OR kullanarak bulabilir ve fonksiyonumuzun sonucuna true diyebiliriz.
Fakat içlerinden bir veya bir kaçının false olması durumunda işler biraz karışıyor Smile) Birden çok kombinasyon çıktığı için if else yapısıda kendi içinde aynı kombinasyonda çoğalıyor ve if else içinde boğulup gidiyorum. Aynı şey case of yapısında da geçerli.
Peki böyle bir durumda şu sonucu istiyorsak Ne yapmalıyız , doğru yaklaşım nedir, nasıl yapmalıyız...

İstenen sonuç : 
1) Eğer şartların hepsi sağlanmışsa true değer döndür. 
2) Şartlar sağlanmamış ise false döndür ve sebebini belirt. (örneğin listbox boş de)

Bende çıkan sonuc ve hatama göre ,hatamı düzeltecek kodu tekrar çağırayım

Teşekkürler.

var
  ASuccess  : Boolean;
 ADummy    : Integer;
begin
 ASuccess := (ListBox1.Count > 0) and (ListBox1.ItemIndex <> -1) and (ListBox1.ItemIndex = ListBox1.Count) and (TryStrToInt(ListBox1.Items[ListBox1.ItemIndex], ADummy));
end;
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
En temiz açıklama muharrem beyden gelmiş, bende sürekli o şekilde kullanırım. Örnek vermek gerekirse;
var
devam : String;
begin
devam := '' ;
if olumsuz şart then devam := 'şu eksik';
if diger olumsuz şart then devam := devam+#13+'şu da eksik';
.....

if (devam='') then işlemler else showmessage (devam);



gibi.
WWW
Cevapla
#6
(21-03-2018, Saat: 08:35)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(21-03-2018, Saat: 02:54)Lord_Ares Adlı Kullanıcıdan Alıntı: Merhaba, yaptığım projelerde bu aralar en çok ihtiyaç duyduğum şeylerden biride , birden çok şartı kontrol etmek ve çıkan sonuca göre boolean değer döndüren prosedür veya fonksiyon hazırlamak..

Örnek olarak bir listbox prosedür veya fonksiyonla denetliyoruz diyelim. 
1) Listbox boşmu.
2) Listoboxta herhangi bir satır seçilimi
3) Seçili olan listboxtaki son üyemi.
4) Listboxtaki sayımı , yazımı.
 
Yukarıdaki seçeneklerin hepsinin true  olduğunu, birkaç iF AND OR kullanarak bulabilir ve fonksiyonumuzun sonucuna true diyebiliriz.
Fakat içlerinden bir veya bir kaçının false olması durumunda işler biraz karışıyor Smile) Birden çok kombinasyon çıktığı için if else yapısıda kendi içinde aynı kombinasyonda çoğalıyor ve if else içinde boğulup gidiyorum. Aynı şey case of yapısında da geçerli.
Peki böyle bir durumda şu sonucu istiyorsak Ne yapmalıyız , doğru yaklaşım nedir, nasıl yapmalıyız...

İstenen sonuç : 
1) Eğer şartların hepsi sağlanmışsa true değer döndür. 
2) Şartlar sağlanmamış ise false döndür ve sebebini belirt. (örneğin listbox boş de)

Bende çıkan sonuc ve hatama göre ,hatamı düzeltecek kodu tekrar çağırayım

Teşekkürler.

var
  ASuccess  : Boolean;
 ADummy    : Integer;
begin
 ASuccess := (ListBox1.Count > 0) and (ListBox1.ItemIndex <> -1) and (ListBox1.ItemIndex = ListBox1.Count) and (TryStrToInt(ListBox1.Items[ListBox1.ItemIndex], ADummy));
end;

Benim oyum bu kullanımdan yana genelde bende böyle kullanırım
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#7
Ama soruyu soran arkadaş, sonuç False ise sebebini de bilmek istiyor.
There's no place like 127.0.0.1
WWW
Cevapla
#8
(21-03-2018, Saat: 09:47)SimaWB Adlı Kullanıcıdan Alıntı: Ama soruyu soran arkadaş, sonuç False ise sebebini de bilmek istiyor.

Result'ı Boolean değil, Integer dönüp, başarılı ise 0, başarısız ise her bir koşul için 1, 2, 3 şeklinde bir dönüş mümkün. Ya da birden fazla hata varsa hataların hepsini belirtsin deniyorsa
1: Hata 1
2: Hata 2
4: Hata 3
8: Hata 4
Hata 1, Hata 2, Hata 4 var ise 1 + 2 + 8 = 11 deyip, 11 ile istediğiniz kodu and'leyerek hangi hataların olduğunu kontrol edilebilir. 

Ya da daha temizi, hata durumunda array ya da objetlist şeklinde bir hata objesi dönüp, hata yoksa bu array ya da object list boş dönülür, hata varsa bütün hatalar bu array ya da object list için dönülür  Blush

Çözüm çok, hangisi işinize gelirse  Angel
Cevapla
#9
Benim yöntemimde genelde Record array şeklinde oluyor.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#10
Ben benzer bir durum için Kontrol ederek Tstringliste ekliyorum, sonuçta size boş ise hata yok devam, var ise textini hata olarak fırlatıyorum.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ile Birden Fazla Pdf Dosyasını Birleştirme/Merge Hk. glagher 5 713 08-09-2023, Saat: 10:37
Son Yorum: glagher
  DBGrid de Birden Fazla Kayıt Seçmek. OZCANK 12 3.258 07-07-2023, Saat: 15:31
Son Yorum: emre
  Firebase RealTime birden fazla sütun Yasemin 0 476 26-04-2022, Saat: 21:12
Son Yorum: Yasemin
  Birden fazla tablo ile toplam alma sorunu cvheneburi 2 896 10-04-2022, Saat: 03:17
Son Yorum: cvheneburi
  birden fazla tabloya kayıt işlemi akuyumcu63 4 1.599 20-05-2021, Saat: 16:49
Son Yorum: akuyumcu63



Konuyu Okuyanlar: 1 Ziyaretçi