|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.02.2011, 22:58 | #1 | ||
Пользователь
Регистрация: 21.05.2010
Сообщений: 77
|
Удалить повторы строк
У меня в Мемо1 список предметов, в Мемо 2 второй список предметов
Мемо1 Цитата:
Цитата:
Как замутить так чтобы в Мемо 2 все те предметы которые есть в Мемо 1 были удалены, причем что бы все это безобразие не тормозило? |
||
22.02.2011, 23:39 | #2 |
Пользователь
Регистрация: 21.05.2010
Сообщений: 77
|
Код:
Последний раз редактировалось Federal; 22.02.2011 в 23:42. |
22.02.2011, 23:51 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
тот же самый код с пересчетом строк memo1 и memo2 только используй эти функции: AnsiCompareStr
или AnsiCompareText |
22.02.2011, 23:57 | #4 | |
Пользователь
Регистрация: 21.05.2010
Сообщений: 77
|
Цитата:
500 000 строк умножить на 500 000 строк это 250 000 000 000 циклов комп захлебывается когда пытается обработать такой цикл Последний раз редактировалось Federal; 23.02.2011 в 00:02. |
|
23.02.2011, 00:15 | #5 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
помоему тут не обойтись без этого количества просмотров. можно воспользоватся например бинарным поиском, но обязательное условие - сортированные данные.
|
23.02.2011, 00:24 | #6 |
Пользователь
Регистрация: 21.05.2010
Сообщений: 77
|
|
23.02.2011, 00:39 | #7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
я бы и рад помочь да особо не знаю чем.
в С есть готовая функция bsearch, в паскале по-видимому нет вот что нашел- тут вроде неплохо описано http://www.cyberguru.ru/programming/...ia-page19.html если функция вернула 0 переносить слово(ключ), иначе не переносить... |
23.02.2011, 06:23 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ребят, ну что же Вы велосипед изобретаете.
Когда всё изобретено до нас 1) откажитесь от Memo (используйте TStringList) Это тоже самое, что Memox.Lines только отсутствие визуализации очень положительно скажется на быстродействии. 2) отсортируйте первый список : TS1.Sort; 3) цикл по второму списку и те значения, которых нет в TS1 - переносите в третий список (это, в общем случае, будет быстрее, чем удалять элементы списка) для поиска элементов в TS1 используйте метод Find примерно так: Код:
Если нужно часто и быстро решать подобную задачу - пересматривайте логику работы. 5) для решения подобной задачи целесообразно, имхо, использовать SQL + хорошую большую мощную СУБД: MS SQL, Oracle и т.д. Они "заточены" под эффективную обработку огромных массивов информации... p.s. а откуда подобные задачи возникают, если не секрет?... |
23.02.2011, 11:17 | #9 |
Пользователь
Регистрация: 21.05.2010
Сообщений: 77
|
Спасибо, это уже в разы грамотно...
Я брутил сервер игры Lineage, проверил первую базу аккаунтов их там 250 000 ак, откапал вторую базу в 500 000 аккаунтов, ну и мне естественно не хотелось что бы во второй базе не встречались аккаунты из первой базы. Вот откуда такая задача мне пришла. Порылся в интернете в поиске готовой программы, но толкового не нашел... Попробывал сам состряпать с мизерными знаниями Delphi, оказалось не все так просто |
23.02.2011, 14:14 | #10 | |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
Цитата:
ахахахах! я месяц назад именно для этой цели (отсев повторов аккаунтов) писал прожку. работает она напролом конечно , ну 100к аккаунтов гдето за 30 сек обрабатывает. не такие уж там и тормоза как ты написал. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удалить повторы | FAiver | Общие вопросы Delphi | 5 | 21.10.2010 20:45 |
Повторы в ListView | Shouldercannon | Общие вопросы Delphi | 2 | 21.10.2010 13:52 |
Как в удалить кучу строк, через одну? | levohotnik | Microsoft Office Excel | 6 | 09.09.2010 21:08 |
повторы в Random | Natok | Помощь студентам | 4 | 26.05.2009 17:41 |
Убрать повторы | ShnapS | БД в Delphi | 4 | 15.05.2009 23:03 |