Konuyu Paylaş : facebook gplus twitter

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 :

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, 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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
(21-03-2018, Saat: 08:35)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(21-03-2018, Saat: 02:54)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba, 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..
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAma 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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mutex ile birden fazla kullanıcıda aynı programın çalışmasını nasıl engelleriz masteryoda 5 245 16-05-2018, Saat: 09:00
Son Yorum: Tuğrul HELVACI
  sql like ile birden fazla kelime arama erdogan 10 312 08-05-2018, Saat: 17:41
Son Yorum: erdogan
  Birden fazla database oluşturma dilo 2 288 28-11-2017, Saat: 16:54
Son Yorum: hyperxman
  Birden fazla Uygulamayı aynı anda derleme yhackup 10 635 27-10-2017, Saat: 20:44
Son Yorum: Abdullah ILGAZ
  [ÇÖZÜLDÜ] Birden fazla alanı kullanarak arama yapmak? Cyb3r 4 879 20-07-2017, Saat: 12:59
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi