Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

HELP!!! Работа с текстом! Поиск множества совпадений! 


КОляныч_   (2002-03-25 19:25) [0]

Мастера, помогите, у меня скоро крыша съедет, перебрал всё что знаю, не получается, вопрос такой, есть http страница, нужно выдергать от туда все ссылки. Страница загружается в TMemo2, например с помощью NMHHTP, далее я это всё беру в переменную S, и беру первую ссылку. Хочу взять вторую и т.д но не ПОЛУЧАЕТСЯ, берётся либо всё время первая, либо вообще ничего. Подскажите, как организовать цикл до конца файла и выдаргать с помощью POS, DELETE, COPY остальные ссылки.

// это нормально работает для первой ссылки
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
a,a1,i:integer;
s,rez:string;
begin
s:=LowerCase(Memo2.Text);
a:=Pos("<a href="",s);
a1:=Pos("</a>",s);
rez:=copy(s,a,a1-a+4);
delete(s,1,a-1);
Memo1.Lines.Add(rez);
end;



panov   (2002-03-25 19:34) [1]

Вот пример поиска подстроки:
//num - номер вхождения подстроки в строку.
function SearchString(const FindStr, SourceString: String;Num: Integer):Integer;
var
FirstP: PChar;
function MyPos(const FindStr, SourceString: PChar;Num: Integer): PChar;
begin
Result := AnsiStrPos(SourceString,FindStr);
if (Result=nil) then Exit;
Inc(Result);
if Num=1 then Exit;
if num>1 then Result := MyPos(FindStr,Result,num-1);
end;
begin
FirstP := PChar(SourceString);
Result := MyPos(PChar(FindStr),PChar(SourceString),Num) - FirstP;
if Result<0 then Result := 0;
end;



КОляныч_   (2002-03-25 19:44) [2]

Спасибо за функцию, нельзя ли ещё уточнить, каким образом её приспособить к примеру выше, т.е. ищется 2 слова, и между ними берётся искомое пространство.



panov   (2002-03-25 19:52) [3]

a := SearchString("<a href="", s,n):
Delete(s,1,a+8);
a := SearchString("</a>", s,n);
Rez := Copy(s,1,a-1);
Delete(s,1,a+4);

и так в цикле...

Позиции для копирования и удаления только проверь...




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.013 c
3-9405            Shaman_Naydak         2002-03-12 22:27  2002.04.04  
Глюкавый MSSQL 2000 + проблема с ARITHABORT


7-9653            Gunya                 2002-01-03 20:32  2002.04.04  
Как послать на LPT сигнал определенной длительности?


1-9523            Beginner              2002-03-23 16:12  2002.04.04  
OpenDialog


3-9428            archer                2002-03-06 10:30  2002.04.04  
Ошибка при работе с Oracle через ADO


14-9597           VuDZ                  2002-02-19 17:11  2002.04.04  
16 заповедей программиста