![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Допустим есть 2 TStringsList. В первом текст такой: "Олег, Андрей, Владимир", а во втором:"Олег, Андрей, Владимир, Сергей". Так вот, как эти 2 StringList сравнить и записать разницу в 3 StringList. Чтобы в нем было: "Сергей".
|
#2
|
|||
|
|||
![]() видимо никто не знает(
|
#3
|
||||
|
||||
![]() 1. Общим циклом перебираем StringList1
2. Код:
StringList2.IndexOf(StringList1[index]); 3. Повторяем всё точно так же для SL2... Это в случае, если по одному имени на строку. Если они через запятую, или ещё как - гугол, как ни странно, работает, ищи "Разделение текста StringList Delphi" Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#4
|
|||
|
|||
![]() Код:
var first, second, third:TStringList; i,k:integer; begin first:=TStringList.Create; second:=TstringList.Create; third:=TstringList.Create; first.Add('Oleg'); first.Add('Vladimir'); first.Add('Andrey'); second.Add('Oleg'); second.Add('Vladimir'); second.Add('Andrey'); second.Add('Sergey'); Memo1.Lines:=first; Memo2.Lines:=second; for I := 0 to second.Count do p.s. до этого не работал с StringList(( Я немного не понял StringList2.IndexOf(StringList1[index]); |
#5
|
||||
|
||||
![]() Пока что всё верно, только в последней строчке
Код:
for I := 0 to second.Count - 1 do Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
|||
|
|||
![]() Код:
for I := 0 to second.Count-1 do if not first.IndexOf(second[i])=second.IndexOf(first[i]) then third.Add(second[i]); Последний раз редактировалось Klo, 10.06.2010 в 19:51. |
#7
|
||||
|
||||
![]() В Third вам надо добавлять разницу между элементами, а вы просто копируете элемент из Second.
Но даже и так, все равно неправильно будет работать, т.к. вы находите элемент которого нет в списке, а у вас задача найти похожий частично элемент и разницу добавить в новый список. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 10.06.2010 в 20:18. |
#8
|
||||
|
||||
![]() Код:
for I := 0 to first.Count-1 do if second.IndexOf(first[i])<0 then third.Add(first[i]); for I := 0 to second.Count-1 do if first.IndexOf(second[i])<0 then third.Add(second[i]); С тебя +. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#9
|
||||
|
||||
![]() Klo, вы уж меня извините, но сравнивать строки в вашем контексте - довольно нетривиальная задача (я бы написал процедуру, но потратил бы на нее несколько месяцев и запросил 4-х значную сумму в еврах).
Переставте задачу, или, если задача не переставляется - измените подход. Иначе - см. выше. ЗЫЖ Феникс как всегда гонит пургу ![]() Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#10
|
||||
|
||||
![]() Аристарх, обоснуй
![]() Дело упирается в сравнение двух списков... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#11
|
||||
|
||||
![]() А что и с чем ты сравнил? Ты уровнял списки - круто, но не то что нужно.
ЗЫЖ Я редко (почти никогда) ошибаюсь, не нужно меня проверять. ![]() Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#12
|
||||
|
||||
![]() Присмотрись к коду. Я перебираю список А, и, если чего-то не нахожу из этого списка в списке Б, добавляю это "что-то" в список В. После чего повторяю то же самое для списка Б к списку А.
В каком месте я их уравниваю? В списке В получается разница между списками А и Б. Не это ли нужно? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#13
|
||||
|
||||
![]() ну... не считая того что это все будет падать.. ты наверное (бугагашечки) прав...
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#14
|
||||
|
||||
![]() Как я сказал уже - сравнение строк - нетривиальная задача.
Тут иногда (а лучше всегда это делать) думать надо...... ЗЫЖ (многоточие означает - задумайтесь) Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#15
|
||||
|
||||
![]() То, что это будет падать, это гемор уже не мой. Мне сказали - "засунуть разницу списков А и Б в список В" - я написал пример. Остальное не моя забота.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |