Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

не получается работа со строкой   Найти похожие ветки 

 
Рашид   (2006-06-03 11:21) [0]

привет мастерам,помогите разобраться не пойму в чем ошибка
в мемо находится html код,данный код выдерает из мемо ссылку:
var
i: integer;
s,f:string;
begin
s:="href="http://";
i := Pos(s,memo1.Text);
f:=Copy(Memo1.text, i+length(s) , i+length(s));
Delete(f,pos("/"",f),i);
label1.Caption:=f;
end;
но выдерает первую попавшиюся,пытаюсь выдернуть все ссылки не получается:( в чем ошибка?

var
i: integer;
s,f:string;
begin
s:="href="http://";
i := Pos(s,memo1.Text);
while i >0 do
begin
f:=Copy(Memo1.text, i+length(s) , i+length(s));
Delete(f,pos("/"",f),i);
end;
label1.Caption:=f;
i := Pos(s,memo1.Text);
end;


 
Mr tray   (2006-06-03 11:28) [1]


> выдерает первую попавшиюся

Вообще, по-моему, pos ищет первую попавшуюся комбинацию символов

> Copy(Memo1.text, i+length(s) , i+length(s))

к символам строки можно обращаться, как к элементам массива (memo1.text[i+length(s)])


 
Mr tray   (2006-06-03 11:33) [2]


> > Copy(Memo1.text, i+length(s) , i+length(s))к символам
> строки можно обращаться, как к элементам массива (memo1.
> text[i+length(s)])


простите. третий аргумент функции copy это count, а не index2. обшибся :)


 
Loginov Dmitry ©   (2006-06-03 11:34) [3]

В данном случае целесообразно использовать регулярные выражения. В Дельфи для этого существует класс TRegExpr (легко отыскивается в Интернете).


 
Mr tray   (2006-06-03 12:04) [4]

const
 cs1="href="http://";
 cs2="/"";
var
 i2,i,n:cardinal;
 ar:array of string;
 s:string;
begin
 s:="href="http://delphigfx.mastak.ru/"    oijiojioj href="http://www.kolnmck.ru/" yugyug   yuguygyug  uyguyg href="http://www.delphimaster.ru/cgi-bin/"";
 i2:=1;
 i:=1;
 n:=0;
 repeat begin
   i:=pos(cs1,s);
   if i>0 then begin
     s:=copy(s,i,length(s)-i+1);
     i2:=pos(cs2,s);
     inc(n);
     setlength(ar,n);
     ar[n-1]:=copy(s,1,i2+1);
     s:=copy(s,i2+2,length(s)-i2+1);
   end;
 end until i<=0;
 for i:=0 to high(ar) do
   writeln(ar[i]);
 readln;

end.



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
2-1149741898
Roman80
2006-06-08 08:44
2006.06.25
RichEdit на последнию строку.


2-1149688963
newbie2
2006-06-07 18:02
2006.06.25
Появился плавающий access violation


4-1143190344
MaxxSoft
2006-03-24 11:52
2006.06.25
DLL для связи двух программ


2-1149751434
XTD
2006-06-08 11:23
2006.06.25
Глючит MediaPleyer


5-1133972500
Exile
2005-12-07 19:21
2006.06.25
Компаненты делфи