Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

удаление повторяющихся строк   Найти похожие ветки 

 
Chipik   (2005-08-14 05:44) [0]

Уже месяц сижу, не получается. Надобно дубликаты удалить из ListBox"а, а то как-то неудобно, да и информации лишней много. Помогите, пожалуйста. Заранее благодарен.


 
Defunct ©   (2005-08-14 08:10) [1]

procedure DeleteDublicates( AListBox : TListBox);
var
 i, j : integer;
 CanAdd : boolean;
begin
 SendMessage( AListBox.Handle, WM_SETREDRAW, 0, 0);
 with TStringList.Create do
 try
    for i := 0 to AListBox.Count - 1 do
    begin
       CanAdd := True;
       for j := 0 to Count - 1 do
          if Strings[j] = AListBox.Items[i] then
          begin
            CanAdd := False;
            break;
          end;
       if CanAdd then
          Add( AListBox.Items[i]);
    end;

    AListBox.Items.Text := Text;

 finally
    free;
    SendMessage( AListBox.Handle, WM_SETREDRAW, 1, 0)
 end;
end;


 
begin...end ©   (2005-08-14 09:25) [2]

> Chipik   (14.08.05 05:44)

with ListBox do
begin
 I := Pred(ListBox.Count);
 while I > 0 do
 begin
   for J := I - 1 downto 0 do
     if ListBox.Items[J] = ListBox.Items[I] then
     begin
       Items.Delete(J);
       Dec(I)
     end;
   Dec(I)
 end
end


Если же ListBox можно отсортировать, или он уже отсортирован, то можно и так:

with TStringList.Create do
 try
   Sorted := True;
   Text := ListBox.Items.Text;
   ListBox.Items.Text := Text;
 finally
   Free
 end


Также можно подумать о том, чтобы не добавлять дубликаты в ListBox, вместо того чтобы потом удалять их из него.



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.092 c
4-1122578548
Galiaf
2005-07-28 23:22
2005.09.25
Простенький файловый менеджер.


6-1116762539
KonstantinXaker(KX)
2005-05-22 15:48
2005.09.25
Извлечение имени файла из интернет-ссылки


1-1125849561
kblc
2005-09-04 19:59
2005.09.25
Ошибка в алгоритме


14-1125154722
psa247
2005-08-27 18:58
2005.09.25
Дыра в ядре 2000


1-1125766063
KLAUS
2005-09-03 20:47
2005.09.25
ListBox1.Items.Strings