Listbox daki aynı verileri silmek istiyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen Commandx »

Herkese kolay gelsin
Öncelikle ilk olarak sorunumla ilgili konuları forumda arattırıp çözüm bulamadım
bu yüzden konu açma gereği gördüm kimse kızmasın : :?
Sorunum şu forma yerleştirdiğim bir liste kutusuna sürekli veri ekleniyor fakat bu veriler bazen harf bazen rakam
bazıları farklı bazıları aynı olabiliyor
ne olduğu önemli değilde çift verileri silmek istedimse olmadı
yapmak istediğim şey listboxa gelen aynı verileri bir buton aracılığıyla aynı kayıtların silinmesini , yani
sadeleştirmek istiyorumda bir türlü for do while döngüsü kuramadım (en zayıf olduğum noktada döngüler ve diziler)
alttaki gibi sıralı olmasada olur
Basit gibi görünüyor uğraştım yapamadım malesef, yardımcı olursanız sevinirim
Resim
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen CiTiZEN »

veriler gösterdiğiniz resimdeki gibi sıralımı yani 1 in karşılığında aynı veri olursa 1 mi olur yoksa sırasız mı?
UWESIS CORPORATION
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Re: Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen Commandx »

Resimde çiftkayıtların silinmesini istiyorumda olmadı
Normalde böyle
Resim
Böyle olmasını istiyorum
Resim
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen mrmarman »

Döngüye sondan 0'a yani başa doğru kurarsan başarabilirsin.
Resim
Resim ....Resim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen unicorn64 »

Kod: Tümünü seç

procedure TForm4.Button1Click(Sender: TObject);
var
 liste:TstringList;
 i:integer;
begin
  liste:=tstringlist.create;

  for i:=0 to listbox1.items.count-1 do
  begin
    if liste.indexof(listbox1.items[i])<0 then
       liste.add(listbox1.items[i]);
  end;
  liste.Sort;
  listbox1.items.text:=liste.text;
  liste.Free;

end;
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Listbox daki aynı verileri silmek istiyorum

Mesaj gönderen mrmarman »

@unicorn64'un cevabı geçerlidir. sadece döngüler ve diziler konusundaki zaafiyete değindiğin için bir de o açıdan bir örnek yazmak istedim.


Kullanımı:

Kod: Tümünü seç

Sadelestir( ListBox1 );

Kod: Tümünü seç

procedure Sadelestir( ListBox:TListBox );
Var
  i, j : integer;
begin
  i := ListBox.Items.Count-1;
  while i >= 0 do begin
    j := i-1;
    while j >= 0 do begin
      if ListBox.Items[j] = ListBox.Items[i] then
      begin
        ListBox.Items.Delete(j);
        dec(i);
      end; // if
      dec(j);
    end; // while j
    dec(i);
  end; // while i
end;
Resim
Resim ....Resim
Cevapla