![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые форумчане, подскажите как сделать чтобы при обновлении строчки на некоем веб сайте, в предложении 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
|
|||
|
|||
|
Цитата:
Огромное спасибо! Действительно помогло!!!!!! |