|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Label и строка на сайте
Здравствуйте уважаемые форумчане, подскажите как сделать чтобы при обновлении строчки на некоем веб сайте, в предложении Label автоматически принимал значение нижеуказаной строки,
Код HTML:
Код:
procedure TForm1.sSpeedButton1Click(Sender: TObject); var s: String; i: Integer; begin s := (WebBrowser1.Document as IHTMLDocument2).Body.innerHTML; i := Pos('<span id="ajx_health">', s); sLabel1.Caption := Copy(s, i, Pos('</span>', s) - i); end; Код HTML:
, заранее благодарен. Последний раз редактировалось M.A.D.M.A.N., 23.11.2013 в 21:59. |
#2
|
|||
|
|||
Для начала, Pos возвращает индекс, по которому находится НАЧАЛО строки. Далее, третий параметр в Copy это не позиция, до которой копировать, а ДЛИННА, т.е. кол-во символов, которые надо скопировать.
Соответсвенно, данный кусок должен выглядеть примерно так: Код:
i := Pos('<span id="ajx_health">', s) + Length('<span id="ajx_health">') + 1; sLabel1.Caption := Copy(s, i, Length(s) - Pos('</span>', s) - i); Ну и еще, если у тебя где-то еще в страничке есть </span>, то надо воспользоваться функцией PosEx, что бы найти позицию правильного </span> |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Dima170792 (24.11.2013)
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Цитата:
Обычная Pos всегда ищет подстроку начиная с первого символа строки. PosEx появилась в стандартной поставке начиная с Delphi 7 (в модуле StrUtils). |
#5
|
|||
|
|||
Спасибо, но можно поподробнее, допустим, мне нужно отправить переменные а и b на страницу php с адресом
И как вернуть обработанные данные обратно? |
#6
|
||||
|
||||
Можно ещё вот так
Код:
const tg ='<span id="ajx_health">'; procedure TForm1.sSpeedButton1Click(Sender: TObject); var s: String; begin s := (WebBrowser1.Document as IHTMLDocument2).Body.innerHTML; Delete(s, 1, Pos(tg, s) + Length(tg) - 1); Delete(s, Pos('</span>', s), Length(s)); sLabel1.Caption := s; end; З.Ы. Ну или всё же через посЭкс Код:
procedure TForm1.sSpeedButton1Click(Sender: TObject); var s: String; i: integer; begin s := (WebBrowser1.Document as IHTMLDocument2).Body.innerHTML; i := Pos('<span id="ajx_health">', s) + Length('<span id="ajx_health">'); sLabel1.Caption := Copy(s, i, PosEx('</span>', s, i) - i); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 03.12.2013 в 14:19. |
#7
|
||||
|
||||
Цитата:
Через PosEx делается примерно так: Код:
const tg ='<span id="ajx_health">'; ..... var ..... p1, p2: Integer; begin ..... p1 := Pos(tg, s); if p1>0 then begin Inc(p1, Length(tg)); p2 := PosEx('</span>', s, p1); if p2 > 0 then sLabel1.Caption := Copy(s, p1, p2-p1); end; end; Но проще (и наверное лучше) воспользоваться умением TWebBrowser парсить страницу: Код:
sLabel1.Caption := (WebBrowser1.Document as IHTMLDocument3).getElementById('ajx_health').innerText; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Dima170792 (22.01.2014)
|
#8
|
|||
|
|||
Цитата:
Огромное спасибо! Действительно помогло!!!!!! |