Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 650

/ вопрос решён /

Здравствуйте, уважаемые эксперты! Приветсвую вас.

В общем проблема не проблема, нуждаюсь в доработке функции и переводе онной на delphi WinAPI.

Суть в следущем:

Нужен HTML-парсер, который бы брал текст между двумя тегами <pre> Нужный текст</pre> и вставлял его в lable1.caption.

В принцепе решил вопрос:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  NMHTTP1.Get('http://localhost/reklama.php'); 
  lable1.caption := NMHTTP1.Body 
end;

Но проблема в том, что он весь боди выдирает и всталвет, и нужно сделать это всё на WinAPI, помогите пожалуйста.

winner13 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: winner13 (статус: 1-ый класс)
Вопрос отправлен: 25 сентября 2011, 14:46
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: Шарайчук Сергей Олександрович

Здравствуйте, winner13!
Ну так вы весь боди и парсите, попробуйте так...
s1 адрес
s2 тег перед текстом
s3 текст после текста

Приложение:
  1. procedure TForm1.pars(s1,s2,s3,:string);
  2. var
  3. i,n,t:integer;
  4. begin
  5. rss:=IdHTTP1.Get(s1);
  6.  
  7. i:=1;
  8. title:='';
  9. while (i<=length(rss)) do
  10. begin
  11. if pos(s2,rss)<>0 then
  12. begin
  13. Delete(rss,1,pos(s2,rss)+length(s2)-1);
  14. title:=copy(rss,1,pos(s3,rss)-1);
  15. Application.ProcessMessages();
  16. rss:='';
  17.  
  18. end else break;
  19.  
  20. end;
  21. inc(i);
  22.  
  23. Application.ProcessMessages();
  24.  
  25. end;


Ответ отправил: Шарайчук Сергей Олександрович (статус: 2-ой класс)
Время отправки: 25 сентября 2011, 14:58


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 25 сентября 2011, 15:20; участников в обсуждении: 1.
winner13

winner13 (статус: 1-ый класс), 25 сентября 2011, 15:20 [#1]:

Чесно я не понял зачем нужно Application.ProcessMessages();
rss:='';
...
inc(i);

Application.ProcessMessages();


И я немного не понял ответа, код не совсем то что нужно, и не на ВинАПИ, можно подробней если есть возможность.
Не решимых проблем нет, есть неприятные для нас решения.

28 сентября 2011, 00:57: Статус вопроса изменён на решённый (изменил автор вопроса — winner13)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.02 сек.