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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно отфильтровать строку, которая меняется 
:(
    Опции темы
Pavelbej
Дата 31.3.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я захватывая ссылки из адресного поля браузера (Firefox, Opera...), но получаю в таком виде:

"http://www.afreego.com/AuthorCenter/","aFreeGo.com","" - это Mozilla
"http://portal.opera.com/","Opera - [Opera Search]" - это Opera
"http://www.google.md/","Google","" - это Firefox

Как убрать все лишнее, оставить только ссылки? 
Это все надо вывести в Edit.
PM MAIL   Вверх
Sunvas
Дата 31.3.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Код

edit1.Text:=copy(edit1.Text,2,pos(',',edit1.Text)-3);



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
W4FhLF
Дата 31.3.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Ну я как обычноsmile

Код

function FixStr(sUrl: string): string;
var
  exp:TRegExpr;
begin
  exp := TRegExpr.Create;
  exp.Expression := 'http\:\/\/.*\/';
  exp.Exec(sUrl);
  result := exp.Match[0];
  exp.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Add(FixStr('"http://www.afreego.com/AuthorCenter/","aFreeGo.com",""'));
end;


Варианта Sunvas'a здесь конечно оптимальней, но если условия чуть усложняться и маска приобретёт нестандартный вид от моего примера плясать легче)


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Pavelbej
Дата 1.4.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прошу прощения что снова поднимаю тему но теперь возникла другай проблема.
А как получить в другом Edit-e, второй в кавычках текст?
PM MAIL   Вверх
Sunvas
Дата 1.4.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Коряво, но работает:
Код

edit1.Text:=copy(edit1.Text,pos(',',edit1.Text)+2,pos(',',copy(edit1.Text,pos(',',edit1.Text)+2,maxint))-2);



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Pavelbej
Дата 4.4.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть проблемы со вторым кодом. Вот что получаю :

Mozilla 
     title -  VPF::↔C6=> >BD8;LB@>20BL AB@>:                       (Вместо руских букв - где искать причину?)
     link -   http://forum.vingrad.ru/topic-143811.html

Firefox 
     title -  VPF::Нужно отфильтровать строк
     link -   http://forum.vingrad.ru/topic-143811.html

Opera
     title -  Opera - [VPF::Нужно отфильтровать строк                (на некоторых сайтах вообще пусто)
     link -   http://forum.vingrad.ru/topic-143811.html 

IExplorer
     title -  VPF::Нужно отфильтровать строк                              (на некоторых сайтах вообще пусто)
     link -   http://forum.vingrad.ru/topic-143811.html 

Как видно, если в Заголовке страницы содержится запятая то текс оберазется от нее и до конца строки. Посмотрите, как можно обойти эту проблему.

PM MAIL   Вверх
ama_kid
Дата 4.4.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Мне кажется, обойти можно обычным парсингом строк. У тебя ведь есть явные разделители - кавычки... Берешь строку - ищешь первую кавычку (видимо всегда будет самым первым символом). Строку до следующей кавычки заносишь в линк... Ну и т.п. для тайтла... В итоге - примерно так (без оптимизации):
Код

procedure ParsExpr(Expr:string; var Link,Title:string);
var
 i:integer;
begin
 i:=1;
 Link:='';
 while Expr[i]<>'"' do inc(i);
 inc(i);
 while Expr[i]<>'"' do
  begin
   Link:=Link+Expr[i];
   inc(i);
  end;
  inc(i);
 while Expr[i]<>'"' do inc(i);
 inc(i);
 Title:='';
 while Expr[i]<>'"' do
  begin
   Title:=Title+Expr[i];
   inc(i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Title,Link:string;
begin
 ParsExpr('"http://www.afreego.com/AuthorCenter/","aFreeGo.com"',Link,Title);
 ShowMessage(Title);
 ShowMessage(Link);
end;



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Pavelbej
Дата 4.4.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ama_kid,  появляются ошибки когда загружаю новый адрес. А если использовать только Title то вроде бы лучше работает но тоже иногда выскакивает ошибка. Как иправить, поможешь?
PM MAIL   Вверх
VICTAR
Дата 4.4.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У меня получился  вот такой вариант:
Код

function GetLink(Source: string; Part: integer=1): string;
var a, b, c: integer;
begin
  a:=0; b:=0; c:=0;
  repeat
    a:=PosEx('"', Source, succ(b));
    b:=PosEx('"', Source, succ(a));
    inc(c);
  until (c=Part)or(a=0);
  if a=0 then b:=0;
  result:=Copy(Source, succ(a), pred(b-a));
end;


Пример использования:
Код

GetLink('"http://www.afreego.com/AuthorCenter/","aFreeGo.com","" - это Mozilla'); //рез-тат http://www.afreego.com/AuthorCenter/
GetLink('"http://www.afreego.com/AuthorCenter/","aFreeGo.com","" - это Mozilla', 2); //рез-тат aFreeGo.com

и т.д.
PM MAIL   Вверх
Yanis
Дата 4.4.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



И всё таки почему не взять пример W4FhLF?
Я понимаю, что так сложно и трудоёмко устанавливать новый компонент. Да ещё и программа становится очень тяжеловесной. Дао не позволяет «брать то, что можешь написать сам», но всё в меру.
Раз установив компонент регулярок можно намного упростить себе программирование. Не говоря уже о меньшем количестве ошибочной обработки строк. 
С условием, что регулярное выражение составлено верно.

Добавлено @ 22:10
Между прочим, после 1.5 года, когда вы глянете в свой код, сомневаюсь что вы вспомните, что и из какой строки вытаскивает GetLink к примеру или ParsExpr.
Другое дело это регулярные выражения. Раз выучив, читать их становится легко и сразу видно, что оно делает.

Вижу смысл «всяких» вариантов только в соревновательных целях. Тагда, да, интересно посмотреть кто во что горазд.

Это сообщение отредактировал(а) Yanis - 4.4.2007, 22:11


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Pavelbej
Дата 4.4.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



VICTAR,  спасибо! То что нужно.

Yanis,  ты о чем? Какой компонент? Ничего не понял.

И еще, раз такое дело. 

Цитата(Pavelbej @  4.4.2007,  11:38 Найти цитируемый пост)

Mozilla 
     title -  VPF::↔C6=> >BD8;LB@>20BL AB@>:          (это появляется вместо руских букв - где искать причину?)
     link -   http://forum.vingrad.ru/topic-143811.html


Куда копать?
PM MAIL   Вверх
Yanis
Дата 5.4.2007, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(Pavelbej @  5.4.2007,  00:38 Найти цитируемый пост)
Yanis,  ты о чем? Какой компонент? Ничего не понял.

Так вот оно что smile
Я о компоненте TRegExpr.

Тебе же пример дал W4FhLF. Игнорировал?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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