ورود

View Full Version : حذف داده تکراری از لیست باکس



dr-delphi
پنج شنبه 19 خرداد 1390, 11:53 صبح
سلام دوستان
همین صور که معلومه می خوام داده های تکراری یا ایتم های تکراری رو تو لیست باکس حذف کنم
دوستان اگه بلدن لطف کنن جواب بدن
ممنون میشم

Felony
پنج شنبه 19 خرداد 1390, 12: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;



سرعت روش اول در تعداد آیتم های بالا به مراتب بیشتر از روش دوم هست .