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


Автор: lutikman 6.7.2011, 21:08
Добрый день.
 Нужно написать программу, которая будет чистить от мусора ссылки из выбранного файла.
 Примеры:
 www.wwww.wwww.wwww.wwww.films1000.ru/ -> wwww.films1000.ru/
 forum.forum.forum.forum.forum.love.netz.ru/index.php -> forum.love.netz.ru/index.php
 A.b.c.d.a.a.a.domain.com -> a.domain.com
 www.www.domain.com -> www.domain.com
 www.forum.www.forum.domain.com -> www.forum.domain.com
 и т.п.
 Cсылки берутся из указанного пользователем текстового файла.
 Должен быть интерфейс пользователя для тестирования. И возможностью быстрой загрузки файла до 2 Гб для тестирования.

 C интерфейсом все понятно.
 Саму функцию очистки ссылки написал, но работает не для всех приведенных случаев. Вот код:
Код

function ValidLink(link : String):String;
var
  StrList : TStringList;
  CurentStr : String;
  RealCount, i : integer;
begin
  StrList := TStringList.Create;
  ExtractStrings(['.'], [], PChar(link), StrList);
  StrList.Delimiter := '.';
 
  RealCount := StrList.Count;
  i := 0;
  CurentStr := StrList.Strings[i];
  while True do
  begin
    if i+1 >= RealCount then
      break;
 
    if CurentStr = StrList.Strings[i+1] then
    begin
      StrList.Delete(i+1);
      Dec(RealCount);
    end
    else
    begin
      inc(i);
      CurentStr := StrList.Strings[i];
    end;
  end;
 
  ValidLink := StrList.DelimitedText;
  StrList.Free;
end;


1. Подскажите где подправить чтобы работало для всех случаев.
2. На сколько оптимизирован данный код и на сколько быстрый. Возможно подскажите алгоритм быстрее данного.
3. Методы быстрой загрузки файлов до 2 ГБ. Сам не пробывал использованием функциями Write и Read, но думаю что не самый быстрый вариант для работы с большими файлами. 

 Буду очень благодарен за помощь. При удачном решении задачи возможна денежная награда.

Автор: 14SatanA88 7.7.2011, 08:07
например
Цитата

A.b.c.d.a.a.a.domain.com -> a.domain.com


а откуда ты знаешь, какой домен валидный?

ведь может попасться и третьего уровня.
forum.love.netz.ru например

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