View Full Version : حذف داده تکراری از لیست باکس
  
dr-delphi
پنج شنبه 19 خرداد 1390, 12:53 عصر
سلام دوستان
همین صور که معلومه می خوام داده های تکراری یا ایتم های تکراری رو تو لیست باکس حذف کنم
دوستان اگه بلدن لطف کنن جواب بدن
ممنون میشم
Felony
پنج شنبه 19 خرداد 1390, 13:19 عصر
از یک StringList به عنوان Buffer استفاده کنید و خصیصه Duplicates اون رو با dupIgnore مقدار دهی کنید :
 var
   Buffer: TStringList;
   cnt: Integer;
begin
   Buffer := TStringList.Create;
   try
     Buffer.Sorted := True;
     Buffer.Duplicates := dupIgnore;
     Buffer.Assign(ListBox1.Items);
     ListBox1.Items.Assign(Buffer) ;
   finally
     Buffer.Free;
   end;
end;
یا میتونید با 2 حلقه تو در تو این کار رو انجام بدید ، حلقه اول یک آیتم رو انتخاب میکنه و حلقه دوم تمام عناصر بعد از اون آیتم انتخاب شده رو بررسی میکنه اگر با اون یکی بودن حذفشون میکنه :
var
  i, j: Integer;
begin
  for i := 0 to ListBox1.Items.Count  do
    if i < ListBox1.Items.Count then
    begin
    for j := ListBox1.Items.Count - 1 downto i + 1 do
      if Trim(ListBox1.Items.Strings[i]) = Trim(ListBox1.Items.Strings[j]) then
        ListBox1.Items.Delete(j);
    end;
end;
سرعت روش اول در تعداد آیتم های بالا به مراتب بیشتر از روش دوم هست .
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.