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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 09:17   #1
yuran111
Пользователь
 
Регистрация: 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 дней только прогу пишу. спасибо.
yuran111 вне форума Ответить с цитированием
Старый 29.04.2011, 09:39   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Есть решеие. Задачка интересная. Контакты В подписи.
"кусочек кода"
Вы не предсталяете, как это "кусочек кода" компилится"
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.04.2011, 10:30   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) у TStringList есть метод поиска .IndexOf()
а ещё лучше (много быстрее и эффективнее) - отсортировать по .Sort; и искать по .Find

2) идеологически неправильно поступаете. В каждом отдельном файле (списке) повторов, как я понимаю - нет?! Тогда не нужно ничего ни откуда удалять.
Задача стоит так - проийти последовательно по второму списку. Каждую строчку проверять на наличие в первом списке (через .Find). Если там этой строки нет - сохранять эту строчку в отдельный список.
После этого решением задачи - это добавить этот временный отдельный список к первому.

p.s. Если самостоятельно не справитесь - тогда давайте примеры (с тестовыми данными!!!) файлов, код обработки набросаю...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.04.2011, 18:24   #4
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию

serge спасибо за подсказку - попробую сам, просто знал, что решений много и задачка действительно интересная, просто раньше работал в accesse - там все такие операции выполняются очень легко как само собой разумеющиеся - базы данных все таки, а тут надо знать алгоритмы ну или делфи опыт иметь, а тут попробовал прогу написал с инета куски кода подставляя- ну а оптимизировать опыта не хватает. я если не разберусь, то скину вам весь проект. а задачка была такая. есть сайт магазина с товарами - каждый день появляются новые товары. код товара может повторятся, название товара может повторятся, но чтобы и цена и адрес магазина - такое врядли. надо отобрать последние поступления. каждый день в обед инфа там обновляется. поэтому вытягиваю привожу к нормальному виду и в файл с датой в имени файла. задача сравнить два csv
файла по строкам и строки которых нет в старом файле вывести в окно стринггрид например для сортировки и фильтрации. ну и файл полностью за какое-то число подгружать в сетку для сортировки и фильтрации. это мне надо просто для себя так как цены в тех магазинах примерно в два- четыре раза дешевле чем везде, но там не купишь, то что хочешь, а выбираешь из того что есть, поэтому проще выбрать и если надо покупать. пишите куда скинуть- скину.
yuran111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить пустую строку созданную 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