Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.06.2019, 12:40   #1
linda88
Форумчанин
 
Регистрация: 17.01.2019
Сообщений: 73
Репутация: 27
По умолчанию Удаление дубликатов

Помогите из мемо удалить дубликаты и нумеровать оставшиеся строки пробовала так:


Код:
sl := TStringList.Create;
  sl.Duplicates := dupIgnore;
   sl.AddStrings(Memo2.Lines);
    Memo1.Lines := sl;
  sl.Free;
не вышло.

Последний раз редактировалось linda88; 10.06.2019 в 12:43.
linda88 вне форума   Ответить с цитированием
Старый 10.06.2019, 13:25   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,609
Репутация: 5617
По умолчанию

к сожалению, думаю, что придётся делать так:
Код:
var i:integer;
...
sl := TStringList.Create;
  sl.Duplicates := dupIgnore;
  for i:=0 to Memo2.Lines.Count-1 do
      sl.Append(Memo2.Lines[i]);
  Memo1.Lines := sl;
  sl.Free;
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 10.06.2019, 13:29   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,795
Репутация: 6622
По умолчанию

вышло, если добпавить второй строкой sl.Sorted := True;
Duplicates только для сортированных строк
кроме нумерации естесно. Так её ни как
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 10.06.2019, 13:58   #4
linda88
Форумчанин
 
Регистрация: 17.01.2019
Сообщений: 73
Репутация: 27
По умолчанию

Не сортировать нужно. там желательно оставить также строки чтобы не сливались в одну
linda88 вне форума   Ответить с цитированием
Старый 10.06.2019, 14:02   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,795
Репутация: 6622
По умолчанию

Цитата:
Не сортировать нужно
Хозяин барин. Тогда забудь о Duplicates и в циклах при построчном копировании лови повторы
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 10.06.2019, 14:10   #6
linda88
Форумчанин
 
Регистрация: 17.01.2019
Сообщений: 73
Репутация: 27
По умолчанию

а как по-другому без Duplicates можно удалить повторы?
linda88 вне форума   Ответить с цитированием
Старый 10.06.2019, 14:24   #7
linda88
Форумчанин
 
Регистрация: 17.01.2019
Сообщений: 73
Репутация: 27
По умолчанию

Поробовала так
Код:
if pos(memo3.Text,memo2.Lines[i])=0 then
 begin
    memo3.Lines.Add(memo2.Lines[i])
 end
  else
  begin
  i3:=pos(memo3.Text,memo2.Lines[i]);
    memo3.Lines.Delete(i3);
  end;
но удаляет больше чем нужно
linda88 вне форума   Ответить с цитированием
Старый 10.06.2019, 14:32   #8
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,795
Репутация: 6622
По умолчанию

А удалять-то зачем? Просто не добавляй строку в приемник, если там уже есть такая. Ну и для поиска строки можно использовать метод IndexOf вместо pos
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 10.06.2019, 14:49   #9
linda88
Форумчанин
 
Регистрация: 17.01.2019
Сообщений: 73
Репутация: 27
По умолчанию

Код:
if pos(memo3.Text,memo2.Lines[i])=0 then
 begin
    memo3.Lines.Add(memo2.Lines[i])
 end
тот же результат но код меньше
linda88 вне форума   Ответить с цитированием
Старый 10.06.2019, 14:53   #10
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,795
Репутация: 6622
По умолчанию

IndexOf. Pos для строки '1' скажет что она входит в строку '12'. А IndexOf целиком строки сравнивает
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление дубликатов SolovejK Общие вопросы Delphi 7 14.03.2015 00:31
Удаление дубликатов Wind-up Bird Microsoft Office Excel 9 02.02.2012 12:49
Удаление дубликатов строк hon Паскаль 10 02.08.2011 05:29
удаление дубликатов в ListView fate Общие вопросы Delphi 8 12.05.2011 16:51
Удаление дубликатов Deltist Microsoft Office Excel 11 14.01.2011 17:01


16:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru