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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2014, 14:57   #1
Fiesko
Пользователь
 
Регистрация: 09.06.2012
Сообщений: 24
По умолчанию Недопонимания при парсинге

Сама функция:
Код:
function Pars(const T_, Text, _T : string;Var CurPos:Integer): string;
var
  a:integer;
begin
  Result := '';
  if (T_='') or (Text='') or (_T='') then Exit;
  a:=posEx(T_, Text,CurPos);
  if a=0 then exit;
  CurPos:=posEx(_T,Text,a+Length(T_));
  if CurPos=0 then Exit;
  Result:=Copy(Text, a+Length(T_), CurPos-a-Length(T_));
  CurPos:=CurPos+Length(_T);
end;
Парсинг:
Код:
CurPos:=1;
for k := 0 to 10 do begin
author:= Pars('"artist":"',StrPage,'",',CurPos);
title:= Pars('"title":"',StrPage,'",',CurPos);
mTime:= Pars('"duration":',StrPage,',"',CurPos);
mUrl:= Pars('"url":"',StrPage,'",',CurPos);
if mTime <> '' then
mTime:= IntToStr(Trunc(StrToInt(mTime) / 60)) + ':' + Two(StrToInt(mTime) mod 60);
Item := Form1.sListView1.Items.Add;
Item.Caption := author;
Item.SubItems.Add(title);
Item.SubItems.Add(mTime);
Работаю с ВКонтакте (API). Выдираю название, автора, время и ссылку на песни.
Так вот, возникает так проблема, если выдираю более 3 элементов (название, автора, время, и т.д), то парсится всего 5 песен (Именно 5), при это все в разнобой (автор один, название другое).

Если же выдираю только 3 и меньше элементов, то все хорошо, песен столько, сколько укажу и все на своем месте. В чем может быть проблема?

Последний раз редактировалось Fiesko; 23.03.2014 в 15:07.
Fiesko вне форума Ответить с цитированием
Старый 23.03.2014, 18:41   #2
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Сообщение от Fiesko Посмотреть сообщение
В чем может быть проблема?
В неверном просчёте CurPos

Последний раз редактировалось XE5; 23.03.2014 в 19:27.
XE5 вне форума Ответить с цитированием
Старый 23.03.2014, 20:31   #3
Fiesko
Пользователь
 
Регистрация: 09.06.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
В неверном просчёте CurPos
Пока что ограничился тем, что вынес
Код:
mUrl:= Pars('"url":"',StrPage,'",',CurPos);
в другой цикл
Fiesko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать переход на новую строку в RegExpr при парсинге... FleXik Общие вопросы Delphi 1 24.02.2014 01:49
Блокируют при парсинге. Schmiss PHP 5 01.02.2013 08:49
Copy или Move при парсинге теста Pcrepair Общие вопросы Delphi 1 29.01.2013 15:12
[android]Русский текст при парсинге HTML Sna1L Общие вопросы по Java, Java SE, Kotlin 4 13.02.2012 14:05
Проблема при парсинге grafgrial Общие вопросы Delphi 0 15.11.2011 23:12