 |
Нужна помощь - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
07.04.2011, 16:42
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 22.06.2010
 Сообщений: 4
 Популярность: 18
 Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 2 сообщениях
|
Нужна помощь
Вот решил написать бота для приложения вконтакте (тюряга). Вообщем я сделал так чтобы бот отправлял post запрос на сервер, получал ответ. Ответ я парсил. Например на кол-во папирос, рублей и т.п. С этим проблем не возникало. Но проблемы возникли в другом, в этом же запросе есть информация о победах над боссами, записанная так:
Код:
<playerWins>
<playerWin>
<bossId>1</bossId>
<droppedKeys>3</droppedKeys>
<winCount>12</winCount>
</playerWin>
<playerWin>
<bossId>2</bossId>
<droppedKeys>1</droppedKeys>
<winCount>1</winCount>
</playerWin>
</playerWins>
<bossId>1</bossId> - Это айди босса, <winCount>12</winCount> - колво побед данного босса. Мне необходимо кол-во побед над каждым боссов выводилось в label, но проблема в том что <winCount> везде одинаковый (Если бы они например писались <winCount1>, <winCount2>... то проблем бы у меня не возникло) Вообщем мне необходи помочь сделать так чтобы в каждом label'е выводилось кол-во побед над боссом, к примеру:
Кирпич: 12 (это <bossId>1</bossId>)
Сизый: 1 (это <bossId>2</bossId>)
Вот код как я получил запросы и попытался вывести победы:
Код:
procedure TForm1.Button5Click(Sender: TObject);
var
Http : TidHttp;
CM : TidCookieManager;
Data : TStringList;
StrPage, UserID, UserName, pp, kp, : String;
i : integer;
begin
try
Http := TIdHTTP.Create(Self);
Data := TStringList.Create;
CM := TidCookieManager.Create(Http);
Http.AllowCookies := true;
Http.CookieManager := CM;
Http.HandleRedirects := true;
Http.Request.Host:='109.234.156.250';
Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Http.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
Http.Request.Referer:='http://cs4287.vkontakte.ru/u3691205/52d96e1188a225.zip';
Data.Add('method=getInfo');
Data.Add('sig=4b4d194a083007aa538f49d2a0cd6b5c');
Data.Add('key=' + Edit2.Text);
Data.Add('user=' + Edit1.Text);
StrPage := Http.Post('http://109.234.156.250/prison/universal.php?getInfo', Data);
finally
Data.Free;
CM.Free;
Http.Free;
end;
ListBox2.Items.Add('-Обновление статистики');
//Парсим Кол-во папирос
pp:=copy(StrPage,pos('<money>',StrPage)+length('<money>'),pos('</money>',StrPage)-pos('<money>',StrPage)-length('<money>'));
Label4.Caption:=pp;
//Парсим кирпича
kp:=copy(StrPage,pos('<bossId>1</bossId>',StrPage)+length('<bossId>1</bossId>'),pos('<bossId>1</bossId>',StrPage)-pos('<bossId>1</bossId>',StrPage)-length('<bossId>1</bossId>'));
kp:=copy(StrPage,pos('<winCount>',StrPage)+length('<winCount>'),pos('</winCount>',StrPage)-pos('<winCount>',StrPage)-length('<winCount>'));
Label21.Caption:=kp;
|
|
|
08.04.2011, 13:22
|
#2
|
|
|
|
Сержант
|
 Регистрация: 13.03.2011
 Сообщений: 118
 Популярность: 1812
 Сказал(а) спасибо: 102
Поблагодарили 305 раз(а) в 76 сообщениях
|
Re: Нужна помощь
Странно, что программа вообще работает. На сколько я знаю у команды Copy - всего три параметра:
1) строка откуда копировать
2) с какой позиции
3) длина строки которую нужно скопировать
У тебя же этих параметров больше трёх. На да ладно - работает и фиг с ним.
Ну а непосредственно по вопросу могу посоветовать следующее. Благодаря уникальному ID босса - можно найти нужный кусок кода, дальше сместиться на нужную позицию - где идёт информация о победах и скопированное число поместить в свойство Caption у компонента Label. И всё это дело загнать в цикл, который будет выполняться до тех пор пока ID босса больше нуля - т.е. пока существует участок кода где можно скопировать нужную инфу.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:00.
|
 |