Вверх ↑
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
#1: 2013-12-09 10:16:09 ЛС | профиль | цитата
Здравствуйте. Есть два списка строк, из 1 списка, надо удалить все строки, которые имеются во втором, если они там есть.
Сделал небольшую схемку, но, чтото при большом списке строк, она не всегда работает и не удаляет некоторые строки.
Может можно сделать както по другому? Подскажите пожалуйста примером.

code_32561.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_32561.txt [1.5KB] [129]
Ответов: 2059
Рейтинг: 132
#2: 2013-12-09 10:52:12 ЛС | профиль | цитата
juk
Тут важно, на сколько велики спски.
Если списки приблизительно по 100 кило, то стоит ипользовать IC, а если один из списков значительно больше, например 200>, то стоит строить таблицу индексов и хешировать строки. Т.е. хещируешь строку из списка А, это будет индексом в таблице индексов для таблици Б.
Есть варианты, - Поиск методом половинного деления...
Но без индексации списки будут сравниваться до второго пришествия!
Впрочем судя по всему, ждать осталось не долго.
карма: 6

0
Ответов: 902
Рейтинг: 27
#3: 2013-12-09 11:00:42 ЛС | профиль | цитата
В первом списке не более 200-300 строк, во втором не более 10.
Думаю до второго пришествия, можно успеть сравнить несколько раз.
Если можно, покажите схему отличную от моей, как это можно сделать.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2059
Рейтинг: 132
#4: 2013-12-09 11:31:16 ЛС | профиль | цитата
Примерно так:
code_32563.txt
карма: 6

0
файлы: 1code_32563.txt [1KB] [314]
Разработчик
Ответов: 26158
Рейтинг: 2127
#5: 2013-12-09 11:48:15 ЛС | профиль | цитата
flint2 писал(а):
Примерно так

А ничего, что содержится нештатный компонент Некоторые принципиально не используют сторонние компоненты.
------------ Дoбавленo в 11.48:
juk, а вот так не проще будет твоя схема

Add(MainForm,1172498,217,245)
{
Width=381
Height=430
}
Add(StrList,13988253,371,252)
{
Strings=#7:9990050|7:5674378|7:9990877|7:6657432|7:9086654|7:0000006|7:5555546|7:7915751|7:0907643|7:0099989|7:4445534|7:9980098|7:1111111|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,13641365:doCase,[])
}
Add(StrList,11738073,294,224)
{
Strings=#7:6515750|7:6789756|7:1288751|7:7915901|7:6715751|7:7915751|7:8715759|7:9990050|7:5674378|7:9990877|7:5554657|7:9909875|7:2234138|7:5674393|7:7874563|7:7915751|7:0907643|7:6678564|7:6578905|7:7915751|7:1111111|
Point(doGetIndex)
Point(onGetIndex)
}
Add(Case,13641365,427,259)
{
Value=Integer(-1)
link(onTrue,7652041:doAdd,[(473,272)(473,398)(298,398)(298,349)])
}
Add(ArrayEnum,9781799,308,294)
{
link(onItem,13988253:doGetIndex,[])
link(Array,11738073:Array,[])
}
Add(Button,11013822,217,294)
{
Left=20
Top=15
link(onClick,9781799:doEnum,[])
}
Add(Memo,7652041,308,343)
{
Left=95
Top=15
Width=270
Height=340
ScrollBars=3
link(Str,9781799:Item,[])
}

карма: 22

0
Ответов: 2059
Рейтинг: 132
#6: 2013-12-09 11:54:49 ЛС | профиль | цитата
nesco,
Я пока не могу разобраться, как их отсортировать.
Правильно я понимаю, что все то, что исчезает после обновления, и есть не стандартные?
И каковы критерии оценки - можно их применять, или нет? Ведь некоторые компоненты очень хорошо подходят для определенного случая.
Как мне разобраться?
карма: 6

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#7: 2013-12-09 12:06:04 ЛС | профиль | цитата
flint2 писал(а):
Ведь некоторые компоненты очень хорошо подходят для определенного случая.

Для себя -- сколько угодно. На форуме тоже можно, но если дать ссылку на этот компонент или приложить его к архиву. И если сторонний компонент начнет глючить, то ответственность за него несет только автор, которого может уже давно не быть на форуме.
------------ Дoбавленo в 12.06:
flint2 писал(а):
Правильно я понимаю, что все то, что исчезает после обновления, и есть не стандартные?

В принципе, штытным считается все, что находится на SVN
карма: 22

1
Голосовали:juk
Ответов: 902
Рейтинг: 27
#8: 2013-12-09 14:14:30 ЛС | профиль | цитата
nesco, Спасибо, так конечно гораздо лутьше.
flint2, Вам тоже спасибо за помощь, хоть нестандартные компоненты я и не использую. Так как часто обновляю программу.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1536
Рейтинг: 176
#9: 2013-12-09 15:00:05 ЛС | профиль | цитата
juk писал(а):
лутьше

juk писал(а):
нестандартные компоненты я и не использую. Так как часто обновляю программу
Так, при обновлении указывай, мол, локальные изменения не трогать (кнопки "Да", "Нет"). Жмёшь кнопку "Нет".
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#10: 2013-12-09 15:32:54 ЛС | профиль | цитата
flint2 писал(а):
стоит ипользовать IC
Хотелось бы посмотреть на эту IC.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 132
#11: 2013-12-09 21:29:01 ЛС | профиль | цитата
Tad,
Я так понял, что речь идет о хешировании строк и поиска в хеш-таблице.
Вот фрагмент кода, имеющий право на жизнь.
code_32572.txt
карма: 6

0
файлы: 1code_32572.txt [2.4KB] [363]
Ответов: 16884
Рейтинг: 1239
#12: 2013-12-09 21:58:08 ЛС | профиль | цитата
flint2 писал(а):
Вот фрагмент кода, имеющий право на жизнь.
Имеющий. А засунуть его в IC и выполнить задание
juk писал(а):
Есть два списка строк, из 1 списка, надо удалить все строки, которые имеются во втором, если они там есть.
не пробовали ?
Tad писал(а):
Хотелось бы посмотреть на эту IC.
а не на "фрагмент кода"

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 132
#13: 2013-12-09 22:27:05 ЛС | профиль | цитата
Tad,
А засунуть его в IC и выполнить задание

Наверное можно было и это сделать, если-бы не другие, гораздо важные задания.
И право, - мы не вшколе.
не пробовали ?

Пробовал. Пробовал на мегабайтных списках и с более сложными операциями, чем замена и удаление.
Это из рабочей программы, удаление там тоже есть. Не рисовать же весь IC.
Совет заключался в том, что при больших списках, не стоит что либо делать на отдельных компонентах.
Не более того.
Tad писал(а)Хотелось бы посмотреть на эту IC. а не на "фрагмент кода"

Гораздо полезней сделать такой компонент, в смысле такой хеш-функции. Была такая мысль, но подумал, что это опять дискретный компонент,
который бесболезен, когда нужно применять хеш-таблици.



карма: 6

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)