![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Не получается спарсить текст такого вида:
Код:
<td align="right"><span class="arial">Country code:</span></td> RU (RUS)</td> Пробовал по разному, а так сайт:http://geoiptool.com/?IP= |
#2
|
||||
|
||||
![]() Функции работы со строками
Pos - поиск подстроки в строке Copy - копирование символов из строки Хорошо написанная программа не требует документации ICQ 9-184-668. |
#3
|
|||
|
|||
![]() Вообще, представленный код (html) некорректный или неполный.
Если код корректный, то можно воспользоваться парсером от Microsoft и тогда получить вирутальное дерево, в котором и искать нужную информацию. А так, можно по быстрому попробовать следующим образом: Код:
const sBeg = '<td align="right"><span class="arial">Country code:</span></td'; sEnd = '</td>'; var iStart, iEnd : Integer; sSrc, sTgt : String; begin sSrc := idHTTP.Get(...); // как ты получаешь страничку iStart := Pos(sBeg,sSrc) + Length(sBeg); iEnd := PosEx(sEnd,sSrc,iStart)-1; sTgt := Copy(sSrc,iStart,iStart-iEnd); |
#4
|
|||
|
|||
![]() delphi 7, на PosEx ругается..
Взял функцию Код:
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer; var I,X: Integer; Len, LenSubStr: Integer; begin If Offset = 1 Then Result := Pos(SubStr, S) Else begin I := Offset; LenSubStr := Length(SubStr); Len := Length(S) - LenSubStr + 1; While I <= Len Do begin If S[i] = SubStr[1] Then begin X := 1; While (X < LenSubStr) And (S[I + X] = SubStr[X + 1]) Do Inc(X); If (X = LenSubStr) Then begin Result := I; Exit; End; End; Inc(I); End; Result := 0; End; End; Не сработало.. |
#5
|
||||
|
||||
![]() Подключи модуль StrUtils.
Помогаю за Спасибо ![]() |
#6
|
|||
|
|||
![]() Ничего не спарсилось вообще.
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,strutils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; IdHTTP1: TIdHTTP; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const sBeg = '<td align="right"><span class="arial">Country code:</span></td'; sEnd = '</td>'; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var iStart, iEnd : Integer; sSrc, sTgt : String; begin sSrc := idHTTP1.Get('http://geoiptool.com/?IP=95.52.112.168'); // êàê òû ïîëó÷àåøü ñòðàíè÷êó iStart := Pos(sBeg,sSrc) + Length(sBeg); iEnd := PosEx(sEnd,sSrc,iStart)-1; sTgt := Copy(sSrc,iStart,iStart-iEnd); memo1.lines.add(sTgt); end; end. |