Mega Code Archive

 
Categories / Delphi / Forum
 

Neoturk - re bu koda çalışır mı ama bu kod çalışır [ döngüler ]

for m:=0 to n-1 do begin x:=tlist3.Strings[m]; x2:=tlist3.Strings[m+1]; if x<>x2 then tlist4.add(x) else tlist5.add(x); end; --- dongunun n-1 inci kez işlendiği sırada "x2:=tlist3.Strings[m+1]" satırı hata vermez mi sence?!? --- alıntıdır: for m:=0 to n-1 do // ya da n-2 ye kadar ... (başka bir çözüm) begin if m < n-1 then // n-1 inci defayı yapmaya gerek yok çünkü karşılaştırılacak bir sonraki kayı yok begin x:=ListBox1.Items.Strings[m]; x2:=ListBox1.Items.Strings[m+1]; if x<>x2 then ListBox2.Items.add(x) else ListBox3.items.add(x); end; end cevab: sanırım önceki yazdığım kodu tam olarakinceleme fırsatınız olmadı diye düşünüyorum.. "dongunun n-1inci kez işlendiği sırada [m+1] satırı neden hata versin ? bunu anlayamadım açıkçası" n-1 inci kez işletiyorum ki böylece sondan birönceki veri ile en son veriyi de kıyaslamış olabiliyorum. n'nin normal değeri zaten programda daha önce "n-1" olarak atamıştım. dolayısıyla şimdi de senin yapmış olduğun gibi "n-1-1= n-2" ye kadar oluyor.. aşağıda yazmış olduğunuz satır programınızı yavaşlatacaktır.. ve gereksiz bir koşul.. bu yüzden n-1-1 daha n-2 yapıyor zaten. bi daha bi daha kontrol ettirmeye gerek yok.. bu kontroller milisaniye bazında da olsa biriktiklerinde 1-2 sn fark geçiktirirler.. " if m < n-1 then // n-1 inci defayı yapmaya gerek yok çünkü karşılaştırılacak bir sonraki kayı yok " sanırım sen benim neden n-1 olarak kullandığımı göremedin ve bana tekrar aynı mantığı göstermeye anlatmaya çalışmışsın ilgin için teşekkürler. listbox1.items.add satırını da pek fazla kullanmamanı tavsiye ederim.. benim yazdığım programlarda bu tür ibareler programın şişmesine ve takılmasına neden oluyor ( application.progressmessages kullanılsa dahi! ) bu yüzden sana tavsiyem bir listedeki verileri listbox'a "add" yapacak isen bunları benim yaptığım gibi Tstringliste ataman ve daha sonra "assign" ile yerleştirmen son derece hızlı ve esnek.. ayrıca bir ricam daha olacak, lütfen soru tekrarlarıyla burayı şişirmeyelim sormak istediğiniz soruyu 2 kayıtta sormuşsunuz, tek kayıda da indirgeyebilirdiniz :) zaten herhangi bir iddiaya filan girmişliğim yok, girmem de, ama benim yazdığım kodu tekrar bana geri göndermen biraz tuhafıma gitti.. eh ne diyelim.. boynuz kulağı geçer, ama tecrübe hepsini geçer :] (n-2 meselesi) çalışmalarınızda kolay gelsin, saygılarımla_ neoturk - [ xxnt03@lycos.co.uk ]