Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2008, 11:51   #1
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию Копирование строки между тегами

Драсти, уважаемые.
Назрела такая задача:

имеется исходный код страницы, который я получил с помощью idHTTP. Где-то внутри кода есть отрывок:
Код:
<font color=white>You have 1 new message!</font>
Как достать вот этот текст "You have 1 new message!"?

ЗЫ
Я не знаю на какой строке находится этот отрывок.
ЗЗЫ
Тег <font color=white> </font> используется только один раз на странице
ЗЗЗЫ
Прошу сразу с примером, т.к. со строками не очень дружу.

Последний раз редактировалось KiDoki; 29.12.2008 в 11:58.
KiDoki вне форума Ответить с цитированием
Старый 29.12.2008, 12:11   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

функции pos и copy
Код:
temps:='<font color=white>';
tempres:=copy(s,pos(temps,s)+length(temps),length(s)-pos(temps,s)-length(temps));
result:=copy(tempres,1,pos('<',tempres)-1);
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 29.12.2008, 12:11   #3
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Код:
var
  f: textfile;
  s: string;
begin
  AssignFile(f,'1.txt');
  reset(f);
    while not eof(f) do
    begin
      readln(f,s);
      if pos('<font color=white>',s)<>0 then
      begin
        s:=copy(s,pos('<font color=white>',s)+length('<font color=white>'),
                  length(s)-pos('<font color=white>',s)-length('<font color=white>')-length('</font>'));
        Break;
      end;
    end;
  CloseFile(f);
  form1.Caption:=s;
Kostia вне форума Ответить с цитированием
Старый 29.12.2008, 12:26   #4
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Спасибо огромное, постораюсь разобраться.
KiDoki вне форума Ответить с цитированием
Старый 29.12.2008, 14:30   #5
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Работает всё отлично кроме одного, текст что копирует функция - "You have 1 new message!</font>" т.е. вместе с </font>. Не пойму как убрать...
KiDoki вне форума Ответить с цитированием
Старый 29.12.2008, 14:57   #6
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

в принципе можно сделать так: начинаешь проверять текст, если начинается с < то ставишь переменную true и пропускаешь все последующие символы, как только встречаешь > изменяешь значение переменной на false и далее заносишь текст в переменную, таким образом можно вырезать весь HTML код
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 30.12.2008, 16:02   #7
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Забыл сказать:
всё работает, использовал процедуру Кости, а проблему которую описал в 5-ом сообщении решил с помощью функции Delete(как я раньше не додумался...)
Спасибо всем.
KiDoki вне форума Ответить с цитированием
Старый 30.12.2008, 16:33   #8
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Назрел вопрос связаный с алгоритмом, предоставленным Костей:
как узнать если алгоритм не нашел текста "You have 1 new message!"?
ЗЫ
Код:
if s='' then ...
не подходит

------решил:------
Искал через Pos какую-то букву:
Код:
if Pos(s,'Y')=1 then ..

Последний раз редактировалось KiDoki; 30.12.2008 в 22:49.
KiDoki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Обставление текста тегами boostman Общие вопросы Delphi 8 17.06.2008 06:23
Копирование файлов и каталогов перетаскиваением между двумя окнами SANTA_KLAUD Общие вопросы Delphi 3 28.05.2008 21:52
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50
Надо в RichEdit Удалить все строки между двумя пустыми Stas))) Компоненты Delphi 7 28.05.2007 16:49