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

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

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

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

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

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


Код:
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
Сообщений: 26,232
По умолчанию

к сожалению, думаю, что придётся делать так:
Код:
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
Сообщений: 19,044
По умолчанию

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

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

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

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

Поробовала так
Код:
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
Сообщений: 19,044
По умолчанию

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

Код:
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
Сообщений: 19,044
По умолчанию

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 Паскаль, Turbo Pascal, PascalABC.NET 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


17:53.


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