|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.04.2011, 09:17 | #1 |
Пользователь
Регистрация: 28.03.2011
Сообщений: 33
|
удалить дубликаты в stringlist
так долго удаляет . сравниваю каждую строку одного листа со всеми строками другого.
for i:=1 to sl.Count-1 do begin for i2:=1 to sl.Count-1 do begin // Сравнение строк result := AnsiCompareText(sl[i], sl1[i2]); if result = 0 then begin а как через duplicate можете кусочек кода показать, а то один дубликат в инете есть как удалять, а мне надо скинуть два листа в один, отсортировать и удалить все строки имеющие повторы. а вообще у меня есть два файла со структурой csv, только разделитель '|' и надо удалить все одинаковые строки в них. файлы по 5 мегабайт и поэтому ищу как это сделать быстрее. если можно кусочек кода, а то 5 дней только прогу пишу. спасибо. |
29.04.2011, 09:39 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Есть решеие. Задачка интересная. Контакты В подписи.
"кусочек кода" Вы не предсталяете, как это "кусочек кода" компилится"
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
29.04.2011, 10:30 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
1) у TStringList есть метод поиска .IndexOf()
а ещё лучше (много быстрее и эффективнее) - отсортировать по .Sort; и искать по .Find 2) идеологически неправильно поступаете. В каждом отдельном файле (списке) повторов, как я понимаю - нет?! Тогда не нужно ничего ни откуда удалять. Задача стоит так - проийти последовательно по второму списку. Каждую строчку проверять на наличие в первом списке (через .Find). Если там этой строки нет - сохранять эту строчку в отдельный список. После этого решением задачи - это добавить этот временный отдельный список к первому. p.s. Если самостоятельно не справитесь - тогда давайте примеры (с тестовыми данными!!!) файлов, код обработки набросаю... |
29.04.2011, 18:24 | #4 |
Пользователь
Регистрация: 28.03.2011
Сообщений: 33
|
serge спасибо за подсказку - попробую сам, просто знал, что решений много и задачка действительно интересная, просто раньше работал в accesse - там все такие операции выполняются очень легко как само собой разумеющиеся - базы данных все таки, а тут надо знать алгоритмы ну или делфи опыт иметь, а тут попробовал прогу написал с инета куски кода подставляя- ну а оптимизировать опыта не хватает. я если не разберусь, то скину вам весь проект. а задачка была такая. есть сайт магазина с товарами - каждый день появляются новые товары. код товара может повторятся, название товара может повторятся, но чтобы и цена и адрес магазина - такое врядли. надо отобрать последние поступления. каждый день в обед инфа там обновляется. поэтому вытягиваю привожу к нормальному виду и в файл с датой в имени файла. задача сравнить два csv
файла по строкам и строки которых нет в старом файле вывести в окно стринггрид например для сортировки и фильтрации. ну и файл полностью за какое-то число подгружать в сетку для сортировки и фильтрации. это мне надо просто для себя так как цены в тех магазинах примерно в два- четыре раза дешевле чем везде, но там не купишь, то что хочешь, а выбираешь из того что есть, поэтому проще выбрать и если надо покупать. пишите куда скинуть- скину. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить пустую строку созданную StringList-ом | Shouldercannon | Общие вопросы Delphi | 18 | 14.12.2011 11:52 |
убрать дубликаты | Nasten'ka7 | Microsoft Office Excel | 1 | 21.03.2011 18:49 |
окрасить дубликаты | Romuald | Microsoft Office Excel | 5 | 07.03.2011 16:33 |
матрица и дубликаты... | xakkkkker | Помощь студентам | 3 | 05.12.2010 20:11 |