Mega Code Archive

 
Categories / Delphi / Examples
 

Neoturk forum - listboxta istenen kaydı listelemede sorun !

" selam hocam ya ben vermiş olduğun kodu programa uyarlayamadım... sorun şu ..: procedure listbox_icinde_ara(Tlistbox:listbox;aranan:string; var sonuc:Tstringlist); buradaki listbox nedir diyor ? hata veriyor. listbox yazan yere kendi listbox isimlerimide yazdım fakat olmadı .. kodları ayrıntılı olarak yazarsan çok sevinirim. şu an kafam durmuş bir durum ve moralimde çok bozuldu ya 2 gün oldu aynı sorunla uğraşıyorum. acaba kodlarda eksiklik mi var ? yardımlarını bekliyorum saygılarımla... vermiş olduğun kod aşağıda: *********** Yöntem - 1 *********** > listbox1 içerisindeki tüm adı "neoturk" olanların listesinin çıkartılması procedure listbox_icinde_ara(Tlistbox:listbox;aranan:string; var m:integer;x:string; begin sonuc.clear; for m:=0 to listbox.items.count-1 do begin x:=listbox.items[m]; if x=aranan then sonuc.add(inttostr(m+1)+'-'+x); //büyük küçük harfe duyarlı //bu kısmı düzenleyiniz. //büyükharfe çeviren fonksiyon desteği ekleyiniz. //bu şekilde taratma yapınız //örnek buyukharf(x)=buyukharf(aranan) then ...... end; end; kullanımı: button1 onclick: var tx:tstringlist; begin tx:=tstringlist.create; tx.clear;listbox_icinde_ara(listbox1,'neoturk',tx); showmessage(tx.text);// sıra numaralarıyla beraber bulunan kayıtları listeleyecek //bu sonuç listesini isterseniz başka bir listboxa atamak isterseniz //listbox2.items.assign(tx); şeklinde kullanabilirsiniz. end; memolipascal " cevap: merhaba, önceki kodlamamda ufak bir hatam oldu gözümden kaçırdım, tlistbox:listbox yazmışım, ( hızlı cevap verdiğim için ) listbox:Tlistbox olarak yer değişecek. zaten sen de değiştirmişsin, tekrar düzeltiyorum, {************** büyük harfe çeviren fonksiyon **************************} function bh(x:string):string; var m:integer;t1,t2:string; begin t1:='';t2:='';x:=trim(x); for m:=1 to length(x) do begin if x[m]='ğ' then t2:='Ğ' else if x[m]='ü'then t2:='Ü' else if x[m]='ş'then t2:='Ş' else if x[m]='i'then t2:='İ' else if x[m]='ö'then t2:='Ö' else if x[m]='ç'then t2:='Ç' else if x[m]='ı'then t2:='I' else t2:=uppercase(x[m]); t1:=t1+t2; end; bh:=t1; end; {********** belirtilen listbox içerisinde arama yapar ***********} procedure listbox_icinde_ara(listbox:tlistbox;aranan:string;var sonuc:Tstringlist;aramamodu:byte); var m:integer;x:string; begin sonuc.clear; aranan:=bh(aranan); for m:=0 to listbox.items.count-1 do begin x:=bh(listbox.items[m]); case aramamodu of 1:if x=aranan then sonuc.add(inttostr(m+1)+'-'+x); 2: if pos(aranan,x)>0 then sonuc.add(inttostr(m+1)+'-'+x); end;//case end; end; procedure TForm1.Button1Click(Sender: TObject); var tx:tstringlist; begin tx:=tstringlist.Create; listbox_icinde_ara(listbox1,'DISKET',tx,2); memo1.text:=tx.text; //veya listbox9.items.assign(tx); tx.Free; end; arama modu diye bi parametre ekledim, 1 dersen "DISKET" ile başlayanları listeler 2 dersen "DISKET" içerenleri listeler. şu anda kodu test ettim ve %100 olarak çalışıyor. önceki kodlamamdan kaynaklı "Tlistbox:listbox" ibaresi hızlı yazdığım için hatalıydı. daha sonra farkettim... şimdi durum OK_ kolay gelsin.. saygılarımla_ neoturk_