Code: |
Procedure IsolateText( Const S: String; Tag1, Tag2: String; list:TStrings ); Var pScan, pEnd, pTag1, pTag2: PChar; foundText: String; searchtext: String; Begin { Set up pointers we need for the search. HTML is not case sensitive, so we need to perform the search on a uppercased copy of S.} searchtext := Uppercase(S); Tag1:= Uppercase( Tag1 ); Tag2:= Uppercase( Tag2 ); pTag1:= PChar(Tag1); pTag2:= PChar(Tag2); pScan:= PChar(searchtext); Repeat { Search for next occurence of Tag1. } pScan:= StrPos( pScan, pTag1 ); If pScan <> NilThenBegin { Found one, hop over it, then search from that position forward for the next occurence of Tag2. } Inc(pScan, Length( Tag1 )); pEnd := StrPos( pScan, pTag2 ); If pEnd <> NilThenBegin { Found start and end tag, isolate text between, add it to the list. We need to get the text from the original S, however, since we want the un-uppercased version! So we calculate the address pScan would hold if the search had been performed on S instead of searchtext. } SetString( foundText, Pchar(S) + (pScan- PChar(searchtext) ), pEnd - pScan ); list.Add( foundText );
{ Continue next search after the found end tag. } pScan := pEnd + Length(tag2); End{ If } Else{ Error, no end tag found for start tag, abort. } pScan := Nil; End; { If } Until pScan = Nil; End;
|
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!