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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.03.2014, 19:57   #1
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию Парсинг

Есть повторящиеся код HTML (пример)
Код:
<div class="primer">
  <p>Primer1</p>
</div>

<div class="primer">
  <p>Primer2</p>
</div>

<div class="primer">
  <p>Primer3</p>
</div>

<div class="primer">
  <p>Primer4</p>
</div>
Если использовать функцию парсинга в цикле (написанную пользователями), то всегда будет парситься текст только из первого абзаца. Как можно сделать, чтобы текст парсился со всех абзацов? Copy, Pos, Delete? До меня не доходит
PaHaNjkee вне форума
Старый 21.03.2014, 20:06   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Может стоит привести код функции?
Arigato вне форума
Старый 21.03.2014, 20:15   #3
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Может стоит привести код функции?
Конешно, вот
Код:
function Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  a := Pos(T_, ForS);
  if a = 0 then
    Exit
  else
    a := a + Length(T_);
  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then
    Result := Copy(ForS, 1, b - 1);
end;
Парсит первое попавшее
PaHaNjkee вне форума
Старый 21.03.2014, 20:18   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

ужас, не мудрено что первое
eval вне форума
Старый 21.03.2014, 20:58   #5
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Спасибо, помощи не требуется, написал
Код:
var
  tmp, parstext, _text, text_: string;
  i, q, b, count: integer;
begin
  text_ := '<p>';
  _text := '</p>';
  parstext := Memo1.Lines.Text;
  count := 4;
  for b := 1 to count do begin
    i := Pos(text_,parstext);
    if i = 0 then Exit;
    i := i + Length(text_);
    tmp := Copy(parstext,i,Length(parstext));
    q := Pos(_text,tmp);
    if q = 0 then Exit;
    tmp := Copy(tmp,1,q-1);
    ListBox1.Items.Add(tmp);
    Delete(parstext,i-Length(text_),q);
  end;
end;
PaHaNjkee вне форума
Старый 21.03.2014, 23:00   #6
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Спасибо, помощи не требуется
А зачем тогда просили? Не понятно.
XE5 вне форума
Старый 21.03.2014, 23:23   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

тут и мемо и еще чертезнает что..
eval вне форума
Старый 22.03.2014, 12:08   #8
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
А зачем тогда просили? Не понятно.
Просто не доходило.

Цитата:
Сообщение от eval Посмотреть сообщение
тут и мемо и еще чертезнает что..
Раз Вы такой "умный", напишите нормальный код.
PaHaNjkee вне форума
Старый 22.03.2014, 12:21   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
PaHaNjkee
ТС, из-за того, что автор сообщения 7 такой "умный" совсем не следует, что он должен написать нормальный код. Он ему не нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 22.03.2014, 16:47   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
PaHaNjkee
Может попробуешь использовать интерфейсы mshtml.dll для парсинга?
Я вот тоже мельком на него поглядываю, но пока руки не доходят.
I'm learning to live...
Stilet вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг Gudzik11 Общие вопросы Delphi 6 15.04.2012 21:51
парсинг Pein95 C# (си шарп) 3 16.09.2011 01:24
Парсинг DeDoK Общие вопросы Delphi 8 02.02.2011 14:20