Arkadaşlar programımda şu şekilde bir kod kullanıyorum aklıma takılan bir konu var acaba yanlış mı düşünüyorum .
if (str <> '') And (str <> '') then
begin
Koşullara uyuyorsa gerçekleşecek kod.
end;
Yukarıda yazdığım gibi bir kodda her iki koşulun gerçekleşmesi esnasında begin end bloğu içindeki kodlar gerçekleşmesi lazım çünkü and operatörü kullandım. Benim programımda ikisinden biri gerçekleştimi begin end bloğu çalışıyor. Ben bu kodu exelden database veri yüklerken kullanıyorum. Programım düzgün çalışıyor sadece aklıma takıldığı için soruyorum kodun tamamıda aşağıda. Benim mantığıma göre doğrusu OR operatörü olması lazım ama niye And operatöründe verim yakalıyorum.
belki if döngüsünü mantığında bir problem olabilir. Burda boş (arada boşlu yok ama ben var diye düşündüm) değilse ve o garip karakter değilse çalış demişsiniz. Yani bunlar değilse kod çalışır.
En güzeli bu if satırından önceki satıra bir breakpoint koyup adım adım çalıştırın ve Str ne değerler alıyor bakın. Eğer değerler doğruysa şart ifadesini değiştirin.
Hocam arada boş kayıt var. 1 satır dolu 1 satır boş o garip işarette dosya sonu çünkü ben bu excel dosyasını LKS'nin otomatik dökümünden alıyorum işte o işaretide LKS programı veriyor bu sebepten dolayı kontrol yaptırıyorum.
Normalde iki koşulun aynı anda gerçekleşmesini istemiyorum çünkü bu kontrol satır satır ve sadece bir hücre kontrol ediliyor bu işlemi OR ile yaptığım zaman kontrollerimin hiç bir faydası olmuyor çok garip bir durum inanın 24 saat tir bu konuyu düşünüyorum.
Hocam breakpoint nasıl konulur biraz açıklarmısınız.
En kolay, kod penceresinin solundaki gri sutuna klikleyerek ilgili satira break point koyabilirsiniz. Ya da Run menuzun altindaki breakpoint seceneginden...
Program calışırken breakpoint olan satıra geldiğinde durur ve sizin komutlarınızla (F7, F8) satır satır devam eder. Eger F7'e basarsaniz o satirda cagirilan bir fonksiyon vs. varsa o fonksiyonun kodlarına dalalnılır. F8 ise o fonksiyonu tek satır olarak işleyip geçmenizi sağlar. Değişkenlerin üstüne mouse ile gelince veya watch ekleyince de değişkenlerin o anki içeriklerini görebilirsiniz..
evet mouse ile üstüne gelince görünüyor zaten. Ama yine de Run menusus altinda Add Watch var. Bir componentin kodda olmayan bir özelliğinin degerine bakmak isterseniz mesela o zaman eklemeniz gerekebilir.
Mesela satırda Query1.Open var. Bunun üzerindeyken ctrl+F5 yaptın. Gelen satıra Query1.Text yazap enter yaparsan querynin sorgulayacağı sql cümlesini görürsün..
Bu tür ifadelerde and operatorleri or operatorleri gibi çalışacaktır. Gayet normal. Kurduğunuz mantığa dikkat ederseniz str değişkeni boş olmadığında ve EOF olmadığında çalış demişsiniz. İki ifadenin birisi gerçekleştiğinde kod mutlaka çalışacaktır. Bu sorunu ya peşpeşe iki tane if kullanarak çözmeye çalışın yada endif kullanın.Veya içiçe if kullanın.
Sorun aynı değişkenin iki ayrı değeri aynı anda kontrol etmesinden kaynaklanıyor.
Yani şöyle olsaydı if str<>'' and str1<>'' then gibi bir ifade olsaydı hiç bir sorun yaşamayacaktınız. İki farklı değişkeni and operatorü ile kontrol edebilirsiniz ancak aynı değişkeni and operatoru ile kontrol etmeye kalkıştığınızda and operatoru sanki or operatoru gibi çalışacaktır. Bi kaç kez bende aynı sorunu yaşadım da ordan biliyorum.
Sevgiler...
and or ifadeleri binary sayı sisteminde ki mantıkla çalışırlar. Okul hayatım boyunca matemetiğin gördüğüm 2. faydasıdır benim için ilk 4 işlemolmuştur. zaten geriside boştur
and operatorunde tüm koşullar doğruysa sonuç doğru döner diğer şartlarda false tır.
aşağıda 1 True 0 False ı temsil ediyor
burada OR kullandığınında str'de herhangi bir karakter var ise ('' de dahil) sürekli begin'den sonraki işlemi yapacaktır. Yani ikinci koşula hiç bakılmayacaktır.