Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > удалить дубли в tstringlist


Автор: AHTOLLlKA 17.1.2010, 07:24
всем привет, сразу к делу а то оч надо
вот столкнулся стакой проблемой:
есть tstringlist
в нем список такой:
http://site1.ru/test/1.php
http://site1.ru/test/12313123.php
http://site1.ru/test/6t5463453565363.php
http://site3333.ru/main.php
http://site3333.ru/glvaaaaaaaaaa.php

тоесть список сайтов и есть одинаковые домены...
тоесть мне надо удалить дубли
как то надо брать первый пункт: http://site1.ru/test/1.php и искать по его моену дубли и удалять и потом со списком что осался продолжаить удалять дубли для каждого домена

как мне такое провернуть ?

Автор: Данкинг 17.1.2010, 11:55
Вот как-то так. Уникальные данные у нас оказываются в t2.
Код

procedure TForm1.FormCreate(Sender: TObject);
var t1,t2:tstringlist;
j,i:integer;
sss:string;
c:boolean;
begin
t1:=tstringlist.Create;
t1.Add('111');
t1.Add('222');
t1.Add('111');
t1.Add('333');
t1.Add('111');
t1.Add('333');
t1.Add('999');
t2:=tstringlist.Create;
for j:=0 to t1.Count-1 do
 begin
  sss:=t1.Strings[j];
  c:=false;
  for i:=0 to t2.Count-1 do
    if (t2.Strings[i]=sss) then c:=true;
 if not c then t2.Add(sss);
 end;
t2.Free;
t1.Free;
end;

Автор: AHTOLLlKA 17.1.2010, 11:58
спасибо за ответ, попробуемс

Автор: Демо 17.1.2010, 17:36
Цитата(AHTOLLlKA @  17.1.2010,  07:24 Найти цитируемый пост)
как то надо брать первый пункт: http://site1.ru/test/1.php и искать по его моену дубли и удалять и потом со списком что осался продолжаить удалять дубли для каждого домена


Возможно сделать одним проходом по списку.
1. Создаём второй пустой список - отсортированный и с Duplicates := DupError; .
2. Организуем с конца цикл по первому списку
3. Выделяем домен из строки первого списка и пытаемся добавить во второй.
4. При неуспешном добавлении удаляем строку из первого списка.
5. После циклв удаляем второй список.

После окончания цикла первый список не содержит повторяющихся адресов доменов.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)