"
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_