Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2021, 13:37
Alex7 Alex7 вне форума
Новичок
 
Регистрация: 18.09.2018
Сообщения: 57
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Цикл по ListBox

Здравствуйте, подскажите пожалуйста, где-то косячу с циклами.
Есть два ListBox, в ListBox1 допустим 20 items, в ListBox2 1000 aitems,
нужно чтобы строки из ListBox перенеслись в ListBox2, но при условии, что в ListBox2 ещё нет такой строки.
Делаю так:
Код:
procedure TForm1.BbAddDicClick(Sender: TObject); 
  var
  i, i1 : integer;
  Key1 : string;
begin
  for i := 0 to ListBox1.Items.Count - 1 do
  begin
  Key1 := ListBox1.Items[i];
    for i1 := 0 to ListBox2.Items.Count - 1 do
  if Key1 <> ListBox2.Items[i1] then
    ListBox2.Items.Add(ListBox1.Items[i]);
    end;
end;
Строки переносятся, но получается 165696 строк, начинают повторятся, первая строка 2 раза, вторая 8 раз и так далее.
Помогите пожалуйста.
Ответить с цитированием
  #2  
Старый 02.10.2021, 21:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,701
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну правильно получается такая фигня.
Что написал, то и получается.
Тебе надо во внутреннем цикле добавлять только если не найдено по итогам всего цикла. А лучше, для простоты понимания, воспользоваться методом IndexOf:
Код:
var
  i  : Integer;
begin
  for i := 0 to ListBox1.Items.Count - 1 do
    if ListBox2.Items.IndexOf(ListBox1.Items[i]) = -1 Then
      ListBox2.Items.Add(ListBox1.Items[i])
end
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram