Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение строк в списке, Нужно найти одинаковые строеи 
:(
    Опции темы
Antony41
Дата 30.12.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Дан ListItem, в нём к примеру 50 строк, нужно чтобы поиск начинался с первого объекта по последний циклом и оставлял только одинаковые строки, мучался через while через двойной for. как правильно нада делать?
PM MAIL   Вверх
Romikgy
Дата 30.12.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



код свой покажи те помогут подправить


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antony41
Дата 30.12.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



если бы я знал, как правильно сформулировать алгоритм, то не задал бы этот вопрос, с одной стороны это элементарно. Вот как можно подругому. В первом списке имеются разные строки во второй пустой список, нужно добавить только которые одинаковы в первом списке.
Вроде бы как всё добавляется, но просто когда процедура проходит циклом бывают повторы, как мне быть. Я не новичёк, просто подумал, что вопрос простой.

Это сообщение отредактировал(а) Antony41 - 30.12.2008, 22:01
PM MAIL   Вверх
Romikgy
Дата 30.12.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



без кода .... ошибка в 17 строке


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antony41
Дата 30.12.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



завтра выложу предположительный код, хоть мозги посвежее будут 

Это сообщение отредактировал(а) Antony41 - 17.3.2010, 11:03
PM MAIL   Вверх
Antony41
Дата 31.12.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Код

procedure TMainForm.BitBtn1Click(Sender: TObject);
var
I,I2:Integer;
begin
if ListBox1.Items.Count<>0 then
   for I2:=0 to ListBox1.Items.Count-1 do
      begin
         for I:=I2+1 to ListBox1.Items.Count-1 do
            if ListBox1.Items[I2]=ListBox1.Items[I] then
            begin
               ListBox1.Selected[I]:=True;
               ListBox1.Selected[I2]:=True;
            end;
      end;
end;

По моему так или лучше for заменить на while?
PM MAIL   Вверх
Romikgy
Дата 31.12.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Код

procedure TMainForm.BitBtn1Click(Sender: TObject);
var
I,I2:Integer;
begin
if ListBox1.Items.Count<>0 then
   for I2:=0 to ListBox1.Items.Count-1 do
      begin
         for I:=0 to ListBox1.Items.Count-1 do
            if ListBox1.Items[I2]=ListBox1.Items[I] then
            begin
               ListBox1.Selected[I]:=True;
               ListBox1.Selected[I2]:=True;
            end;
      end;
end;

выделит все одинаковые строки , но везде ,
как сравнивать надо то?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Antony41
Дата 31.12.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Смысл такой и есть чтобы он оставил все одинаковые строки, а неодинаковые удалил.
Только без подключения третьего цикла.

С новым годом уважаемые!

Это сообщение отредактировал(а) Antony41 - 31.12.2008, 17:16
PM MAIL   Вверх
Romikgy
Дата 31.12.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Код

procedure TForm1.Button1Click(Sender: TObject);
var
I,I2,j:Integer;
sl: tstringlist;
begin
sl:=tstringlist.create;
try
if ListBox1.Items.Count<>0 then
begin
   for I2:=0 to ListBox1.Items.Count-1 do
      begin
         for I:=I2+1 to ListBox1.Items.Count-1 do
            if ListBox1.Items[I2]=ListBox1.Items[I] then
            begin
               j:=sl.IndexOf(ListBox1.Items[I]);
               if j=-1 then

               sl.add(ListBox1.Items[I] );
            end;
      end;
ListBox1.Items.text:=sl.text;
end;
finally
sl.free;
end;
end;

все вроде работает как надо

С НГ!

Это сообщение отредактировал(а) Romikgy - 31.12.2008, 21:05


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
aktuba
Дата 4.1.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата(Antony41 @  30.12.2008,  14:48 Найти цитируемый пост)
нужно чтобы поиск начинался с первого объекта по последний циклом

Странный запрос... Иначе можно было бы вообще только одним циклом обойтись...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Antony41
Дата 12.6.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



и как?
PM MAIL   Вверх
Keeper89
Дата 12.6.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Раз уж воскресили тему, предложу свой вариант:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  i, foundIndex: Integer;
begin
  for i := ListBox1.Items.Count - 1 downto 0 do
  begin
    foundIndex := ListBox1.Items.IndexOf(ListBox1.Items[i]);
    // Если найденная строка не является текущей и 
    // уже не находится в списке - добавляем во 2 список
    if (foundIndex <> -1) and (foundIndex <> i) and
       (ListBox2.Items.IndexOf(ListBox1.Items[i]) = -1) then
      ListBox2.Items.Add(ListBox1.Items[i])
  end;
end;


Это сообщение отредактировал(а) Keeper89 - 12.6.2009, 15:46


--------------------
PM MAIL WWW   Вверх
Antony41
Дата 6.7.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



хм неплохой вариант а как можно с ListView'ом проделать такую же операцию
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0887 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.