![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите найти самый быстрый способ [D5, Win95/98, WinME, NT4, Win2k, WinXP]
Smok_er © (2002-05-22 23:53:00)фильтрования TStringList на повторяющиеся значения. Т.е. задача следующая - из StringList"a из 100000 строк надо получить меньший по размеру StringList в формате Name=Value, а еще лучше -отдельные 2 StringList"a для Name и Value.
Пробовал метод IndexOf, но он ужасно медленно ищет. Может есть у кого-то более оптимизированный подход?
Большое спасибо!
Smok_er (2002-05-23 01:38:00) [1]Спасибо!
Все вроде понятно. Буду пробовать. Завтра если что получится/не получится - напишу о результатах.
lipskiy (2002-05-23 01:07:00) [2]Исходник есть на работе, сейчас нету.
Но там все просто.
Я даже не совсем верно сказал, вспомнил сейчас - еще проще можно.
Сортируешь свой стринг лист, потом циклом бежишь по нему с хвоста в начало и удаляешь каждую (n-1)-ю строчку, если она равна n-ой. Проверку надо делать с переводом текста в один регистр, например нижний.
Насчет памяти - не подскажу, не спец в этой области.
Smok_er (2002-05-23 00:56:00) [3]Ничего страшного :)
Самому частенько развлечься хочется, только вот времени почти никогда нет :(
Можешь привести пример исходного кода? В смысле я понимаю как это сделать, но все же...
И еще один вопрос - в программе удаляю StringList (пробовал и free и destroy), но почему-то в task manager"e это не заметно -"пожираемая" программой память не уменьшается :( Как выйти из этого положения?
lipskiy (2002-05-23 00:47:00) [4]То есть в "Потрепаться".
lipskiy (2002-05-23 00:46:00) [5]Сорри за ник - это я в "Общей" развлкался :)
Билл Гейтс (2002-05-23 00:45:00) [6]Делал я такое.
Не знаю, как для 100000 строк, но все же...
Сортируешь свой СтрингЛист методом Сорт.
Создаешь чистый СтрингЛист, бежишь по первому и копируешь во второй только строки, которые отличаются от предыдущей.
Чтоб память экономить - из первого можно сразу удалять.
Туповато, но быстро.