Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с алгоритмом или regexp'ом. 
:(
    Опции темы
MikeLevinN
Дата 22.10.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 6.9.2007

Репутация: нет
Всего: нет



Не знаю. может не в том разделе написал, может надо в Delphi для новичков.


Совсем голова плохо соображает, не могу придумать решения.
Пользователь вводит адрес веб-страницы и мне нужно этот адрес сверять с другими.

Существует два типа сравнения.

Первый: пользователь вводит страницу, например "http://vingrad.ru" или "http://www.vingrad.ru" или "vingrad.ru". А у меня скажем в базе тоже есть страницы для сравнения: "http://vingrad.ru" или "http://vingrad.ru/mail.html" или "http://www.vingrad.ru" или "vingrad.ru" или "http://superserver.com/vingrad.ru" или "http://www.superserver2.ru/www.vingrad.ru"
Как мне сравнить если например пользователь ввел "http://www.vingrad.ru" совпадало "www.vingrad.ru", но не совпадало скажем с "http://superserver.com/vingrad.ru", не совпадало с "http://vingrad.ru/mail.html". (И другие варианты исходя из данных выше строкой)


Второй: пользователь вводит страницу, как выше в примере, а у меня идет сравнение полностью по серверу, т.е. всё как в примере выше,  например если пользователь ввел: "http://www.vingrad.ru", то это должно совпадать с "http://vingrad.ru/mail.html".



Подскажите пожалуйста. Уже голова болит.

Это сообщение отредактировал(а) MikeLevinN - 22.10.2007, 12:28
PM MAIL   Вверх
fse
Дата 22.10.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: 1
Всего: 1



URL строка - заковыристая штука, всё прямо сразу и не предусмотришь!
Надо, думаю, выделить в первую очередь сервер... Вот кусок кода:

Код

procedure TForm1.Button3Click(Sender: TObject);
var
  S: string;
  Position: Integer;
  Protocol, Server, GetString: string;
begin
  S := '   http://www.vingrad.ru/main.htm    ';
  S := LowerCase(Trim(S)); // Обрежим пробелы на всякий случай, мало ли какие
  // данные придут и переведём в нижний регистр для дальнейшего однотипного
  //сравнения
  // http:// - это протокол, выделим его
  Position := Pos('://', S);
  if Position <> 0 then
  begin
    Protocol := Copy(S, 1, Position - 1);
    Delete(S, 1, Position + 2);
  end;
  Position := Pos('www.', S);
  if Position = 1 then
    Delete(S, 1, 4);
  // Вот у нас осталось в S имя сервера и Get-часть URL адреса
  Position := Pos('/', S);
  if Position <> 0 then
  begin
    Server := Copy(S, 1, Position - 1);
    Delete(S, 1, Position);
    GetString := S;
  end else
  begin
    // Ну, или просто имя сервера
    Server := S;
    GetString := '';
  end;
  Memo1.Lines.Add('Protocol: ' + Protocol);
  Memo1.Lines.Add('Server: ' + Server);
  Memo1.Lines.Add('Get: ' + GetString);
end;


Сравнивать в первую очередь надо протокол и имя сервера. Да, ещё я не учёл в коде, что м.б. указан в конце ещё и порт.
А после имя сервера идёт командная строка, её сравнивать с известной main.htm, возможно, бесполезно, т.к. это может и поменяться в лёгкую. И стартовая страничка может быть не index.htm или main.htm - а и совершенно любая другая, зависит от настройки сервера.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0739 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.