![]() |
|
|
#1
|
||||
|
||||
|
Здравствуйте! Есть в Memo исходник html-страницы. Нужно все ссылки, которые есть в Memo1 вывести отдельно, в Memo2. Делаю вот так:
Код:
var
i: integer;
begin
for I := 0 to Memo1.Lines.Count - 1 do
begin
while Pos('<a href="',Memo1.Lines.Strings[i])<>0 do
begin
Memo2.Lines.Add(Copy(Memo1.Lines.Strings[i],Pos('<a href="',Memo1.Lines.Strings[i])+9,Pos('"',Memo1.Lines.Strings[i])-2));
end;
Memo1.Lines.Delete(i);
end;
end;Подскажите, в чем проблема??? Последний раз редактировалось adidas, 30.08.2010 в 19:06. |
|
#2
|
|||
|
|||
|
Проблема в том, что в данном случае функция POS не подходит.
Ну и, например, если в одной строке 2 или более ссылок, то тоже данный код будет работать неправильно. Да и еще цикл FOR упадет. Рекомендации: 1. Взять текст как строку из Memo1.Lines.Text 2. Пользовать функцию PosEx. |
|
#4
|
||||
|
||||
|
Спасибо, но не все ссылки полностью выводит
![]() Добавлено Вроде, это: Код:
rege.Expression:='(http|ftp)://([\w.]+)/([\w\?\+=\-\.\\]+)'; Код:
rege.Expression:='(http|ftp)://([\w.]+)/([\w\?\+=\-\\/\.\\]+)'; ![]() Последний раз редактировалось adidas, 31.08.2010 в 00:22. |
|
#5
|
||||
|
||||
|
Цитата:
![]() |