Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 23:15   #1
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Вопрос Как избежать повтор строк в тексте

Имею текст в компоненте Мемо1
Цитата:
азбука
вариант
таблица
лодка
азбука
период
азбука
вариант
...и т.д
мне нужно чтобы строки в которых повторяются слова удалялись, естественно если мы имеем 3 строки "азбука" две надо удалить одну оставить, простым способ перебора каждой строки по всему документу нереально так как таких строк примерно 300 000 ( полдня займет ), если есть мысли, прошу поделится...
Federal вне форума Ответить с цитированием
Старый 19.10.2010, 08:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) всё таки Вам нужно строки, в которых слова повторяются или ПОВТОРЯЮЩИЕСЯ/ строки удалить?! По Вашему примеру - именно второе!

2) строчки "Азбука" и " Азбука " одинаковые?
А строчки "Азбука" и "АЗБУКА" ?!

3) думаю, что простым перебором займёт не полдня, а пару минут.
почему не написать 10 строчек кода и не проверить?!
Только все операции надо проводить не в самом memo, а создать объект типа TStringList, в него забрать содержимое мемо и обрабатывать его.
Иначе, при работе напрямую с Memo будут большие тормоза.

4) если порядок не важен - тогда Объёкт.SORT
и все повторы станут друг за другом. можно в один проход все повторы удалить.

5) можно воспользоваться свойством игнорировать дубликаты, установить его у нового TStringList'а и построчно перегнать туда содержимое Memo (p.s. лично я не советую применять этот способ, но, возможно, я и ошибаюсь, и это будет оптимальное решение).

удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.10.2010, 08:43   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так подойдет?
Код:
var s:TStringList;i:integer;
begin
 s:=TStringList.Create;
 s.Duplicates:=dupIgnore;
 s.Sorted:=true;
 s.AddStrings(Memo1.Lines);
 Memo1.Lines.Text:=s.Text;
 s.free;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.10.2010, 14:38   #4
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Хорошо

Спасибо, ребят!!!
Federal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Listbox и повтор строк в нем grafgrial Общие вопросы Delphi 4 23.07.2010 22:13
Как избежать Selection? Мультипликатор Microsoft Office Word 10 21.06.2010 17:15
Бот - как избежать слежки? boris-blade Win Api 9 28.12.2009 09:11
как избежать кэширования в Опере rolling PHP 3 01.12.2009 18:34
Как прописатьв макросе повтор... Bu$ter Microsoft Office Excel 6 18.09.2008 09:40