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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2011, 17:46   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Парсинг данных из Stringlist

Всем привет.
Имеется стринглист с данными
PHP код:
HTTP/1.1 200 OK
Server
nginx/0.7.67
Date
Wed20 Apr 2011 13:39:12 GMT
Content
-Typetext/html
Connection
keep-alive
X
-Powered-ByPHP/5.2.14
Cache
-Controlmax-age=604800
Expires
Wed27 Apr 2011 13:39:12 GMT
Content
-Length573

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
<
title>Главная</title>
<
link href="styles/blue/styles.css" rel="stylesheet" type="text/css" />
</
head>
<
body>
<
p><h1>Главная страница бота</h1></p>
<
div style="visibility:hidden">
<
input name='unip' type='text' value=""/>
<
input name='urld' type='text' value=""/>
<
input name='fpath' type='text' value=""/>
</
div>
</
body>
</
html
Отсюда нада достать значение 3 свойств
1. unip
2. urld
3. fpath
Значение находиться между скобками возле Value.
Не знаю как спарсить(
Lauri вне форума Ответить с цитированием
Старый 21.04.2011, 19:05   #2
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Никто не поможет?( Срочно нужно(
Lauri вне форума Ответить с цитированием
Старый 21.04.2011, 19:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

задача то простая, я думал, что Вы уже самостоятельно легко решили.
И я не понимаю, в чём сложность.
перебрать все строчки в StringList в цикле.
проверять наличие ключевых слов.. если они есть, выбирать нужную часть строки..
так, СХЕМАТИЧНО:
Код:
for i:=0 to SL.Count-1 do begin
   if Pos('input name=''unip''', SL.Strings[i]) > 0 then begin
      p1 := Pos('value="', SL.Strings[i]);
      s := Copy(SL.Strings[i],  p1 + Length('value="'), Length(SL.Strings[i]) - (p1 + Length('value="')) + 1 );
      sunip := Copy(s,1, Pos('"', s)-1);
   end;
   if Pos('input name=''urld''', SL.Strings[i]) > 0 then begin
      p1 := Pos('value="', SL.Strings[i]);
      s := Copy(SL.Strings[i],  p1 + Length('value="'), Length(SL.Strings[i]) - (p1 + Length('value="')) + 1 );
      surld := Copy(s,1, Pos('"', s)-1);
   end;
....
end;
код получения value лучше вытащить в отдельную функцию!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2011, 19:42   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эмм, а чем это отличается от тех кучи примеров что я выкладывал в разделе сетей?(да и не только я)
то что у вас появилось тело запроса?(точнее ответа)
оно не мешает.
и парсить лучше уж не загоняя в StringList, а единым стрингом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.04.2011, 20:01   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от Lauri Посмотреть сообщение
Всем привет.
Имеется стринглист с данными
PHP код:
HTTP/1.1 200 OK
Server
nginx/0.7.67
Date
Wed20 Apr 2011 13:39:12 GMT
Content
-Typetext/html
Connection
keep-alive
X
-Powered-ByPHP/5.2.14
Cache
-Controlmax-age=604800
Expires
Wed27 Apr 2011 13:39:12 GMT
Content
-Length573

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=cp1251" />
<
title>Главная</title>
<
link href="styles/blue/styles.css" rel="stylesheet" type="text/css" />
</
head>
<
body>
<
p><h1>Главная страница бота</h1></p>
<
div style="visibility:hidden">
<
input name='unip' type='text' value=""/>
<
input name='urld' type='text' value=""/>
<
input name='fpath' type='text' value=""/>
</
div>
</
body>
</
html
Отсюда нада достать значение 3 свойств
1. unip
2. urld
3. fpath
Значение находиться между скобками возле Value.
Не знаю как спарсить(
нус спарсить довольно просто.


Находим <div style="visibility:hidden">

далее находим </div> копируем все что между ними, исключая то что искали.

Далее загоняем результат в s:string и поиском проходимся по
type='text' value=" и "/>

Нашли? Грабим текст между ними. Удаляем чтобы не находить их снова.
Человек_Борща вне форума Ответить с цитированием
Старый 21.04.2011, 20:22   #6
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

спасибо, но я сделал чуть-чуть по другому) рашил парсить по символам. Задача решена
Lauri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringList adr Общие вопросы Delphi 0 05.11.2010 18:43
Парсинг данных Shouldercannon Общие вопросы Delphi 2 09.07.2010 13:14
Поиск в StringList Gerzs Общие вопросы Delphi 1 17.01.2010 20:07
Парсинг полученных данных Shouldercannon Общие вопросы Delphi 11 09.01.2010 21:47
stringlist grater83 Общие вопросы Delphi 2 21.09.2009 14:26