Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.06.2014, 19:45
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Обработка Post запроса

Доброго времени суток!
Все цифры динамичны в коде.
Т.е место 15 в следующий раз будет 40 и т.д.
Имеется еще одна проблема:
Код:
{"adventures":{"list":[{"delay":"20","description":"\u0411\u0430\u043d\u0449\u0438\u043a-\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0441\u0440\u0430\u043c\u0435\u043b, \u043d\u0430\u0448\u0438\u0445 \u0431\u0430\u0431 \u0432 \u0431\u0430\u043d\u0435 \u043f\u0443\u0433\u0430\u0435\u0442, \u0430\u043d\u0443-\u043a\u0430 \u0437\u0430\u0434\u0430\u0439 \u0435\u043c\u0443 \u0436\u0430\u0440\u0443!","reward_money":36,"background":"1","name":"\u0417\u0430\u0434\u0430\u0442\u044c \u0436\u0430\u0440\u0443","reward_exp":2,"npc":"1","req_energy":"10","min_lvl":"1","id":"5","reward_exp_base":2,"reward_money_base":18,"clan_exp_boost":0,"clan_money_boost":0,"game_exp_boost":0,"game_money_boost":18},
{"delay":"20","description":"\u041b\u044e\u0434 \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u0436\u0430\u043b\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u043b\u044b\u0434\u0435\u043d\u044c \u0438\u0445 \u0438\u0437\u0432\u043e\u0434\u0438\u0442. \u0415\u0433\u043e-\u0442\u043e \u0438 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0443\u0447\u0438\u0442\u044c. \u041d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0448\u044c\u0441\u044f \u043b\u0438?","reward_money":4,"background":"1","name":"\u041f\u0440\u043e\u0443\u0447\u0438\u0442\u044c \u0437\u043b\u044b\u0434\u043d\u044f!",
"reward_exp":18,"npc":"2","req_energy":"10","min_lvl":"1","id":"8","reward_exp_base":18,"reward_money_base":2,"clan_exp_boost":0,"clan_money_boost":0,"game_exp_boost":0,"game_money_boost":2},{"delay":"20","description":"\u0417\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u043d\u0435 \u0442\u044e\u0445\u0430 - \u0442\u043e\u043f\u0430\u0435\u0442 \u0434\u0430 \u0441\u0442\u0443\u0447\u0438\u0442 \u043f\u043e \u043d\u043e\u0447\u0430\u043c, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0430\u0434\u0443 \u0441 \u043d\u0435\u0439 \u043d\u0435\u0442. \u041a\u043e\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u0435\u0435 \u043e\u0434\u043e\u043b\u0435\u0442\u044c - \u043d\u0430\u0433\u0440\u0430\u0436\u0443!","reward_money":30,"background":"1","name":"\u0422\u044e\u0445\u0430 \u0437\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b\u0430",
"reward_exp":5,"npc":"3","req_energy":"10","min_lvl":"3","id":"14","reward_exp_base":5,"reward_money_base":15,"clan_exp_boost":0,"clan_money_boost":0,"game_exp_boost":0,"game_money_boost":15}],"bonus":{"type":"2","enabled":"1","silver_multiplier":"1","experience_nultiplier":"0","experience_multiplier":"0"}}}

Суть такова.
У "reward_exp" есть 3 значения.
(2, 18 и 5)
Нужно каждое вывести в разные edit.

Код:
 var
 tmp,tmp1,tmp2: string;
 s,a,d:string;

 begin
s:=edit4.text;
tmp:= Copy(s, Pos('"reward_exp":', s)+13, Length(s));
 edit4.text:= Copy(tmp, 0, Pos(',"', tmp)-1);

 a:=edit5.text;
tmp1:= Copy(a, Pos('"reward_exp":', a)+13, Length(a));
 edit5.text:= Copy(tmp1, 0, Pos(',"', tmp1)-1);

 d:=edit6.text;
tmp2:= Copy(d, Pos('"reward_exp":', d)+13, Length(d));
 edit6.text:= Copy(tmp2, 0, Pos(',"', tmp2)-1);

Данный код здесь не работает, т.к в разных полях выводится одинаковое число.
Прошу помощи!

Последний раз редактировалось lmikle, 08.06.2014 в 20:53.
Ответить с цитированием
  #2  
Старый 08.06.2014, 20:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тебе возвращается, судя по виду, JSON.
Возьми любую библиотеку работы с JSON и получай данные через нее по именам.
Ответить с цитированием
  #3  
Старый 08.06.2014, 21:20
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Тебе возвращается, судя по виду, JSON.
Возьми любую библиотеку работы с JSON и получай данные через нее по именам.

расскажи поподробней про библиотеки JSON или кинь почитать что нибудь.
Спасибо.
Ответить с цитированием
  #4  
Старый 08.06.2014, 21:46
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Разобраться не смог.
Ответить с цитированием
  #5  
Старый 08.06.2014, 23:23
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от XaXaTyH
Разобраться не смог.
Вот пример обработки твоей строки с помощью библиотеки superobject:
Код:
uses superobject;
.....
procedure TForm1.Button1Click(Sender: TObject);
const
  cJSON: String =
    '{"adventures":{"list":[{"delay":"20","description":"\u0411\u0430\u043d\u0449\u0438\u043a-\u0442\u043e \u0441'+
    '\u043e\u0432\u0441\u0435\u043c \u043e\u0441\u0440\u0430\u043c\u0435\u043b, \u043d\u0430\u0448\u0438\u0445 \u'+
    '0431\u0430\u0431 \u0432 \u0431\u0430\u043d\u0435 \u043f\u0443\u0433\u0430\u0435\u0442, \u0430\u043d\u0443-\u'+
    '043a\u0430 \u0437\u0430\u0434\u0430\u0439 \u0435\u043c\u0443 \u0436\u0430\u0440\u0443!","reward_money":36,"b'+
    'ackground":"1","name":"\u0417\u0430\u0434\u0430\u0442\u044c \u0436\u0430\u0440\u0443","reward_exp":2,"npc":"'+
    '1","req_energy":"10","min_lvl":"1","id":"5","reward_exp_base":2,"reward_money_base":18,"clan_exp_boost":0,"c'+
    'lan_money_boost":0,"game_exp_boost":0,"game_money_boost":18},{"delay":"20","description":"\u041b\u044e\u0434'+
    ' \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u0436\u0430\u043b\u'+
    '0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u043b\u044b\u0434\u0435\u043d\u044c \u0438\u0445 \u0'+
    '438\u0437\u0432\u043e\u0434\u0438\u0442. \u0415\u0433\u043e-\u0442\u043e \u0438 \u043d\u0430\u0434\u043e \u0'+
    '43f\u0440\u043e\u0443\u0447\u0438\u0442\u044c. \u041d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0448\u044c'+
    '\u0441\u044f \u043b\u0438?","reward_money":4,"background":"1","name":"\u041f\u0440\u043e\u0443\u0447\u0438\u'+
    '0442\u044c \u0437\u043b\u044b\u0434\u043d\u044f!","reward_exp":18,"npc":"2","req_energy":"10","min_lvl":"1",'+
    '"id":"8","reward_exp_base":18,"reward_money_base":2,"clan_exp_boost":0,"clan_money_boost":0,"game_exp_boost"'+
    ':0,"game_money_boost":2},{"delay":"20","description":"\u0417\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b'+
    '\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u043d\u0435 \u0442\u044e\u0445\u0430 - \u0442\u043e\u043f\u0430'+
    '\u0435\u0442 \u0434\u0430 \u0441\u0442\u0443\u0447\u0438\u0442 \u043f\u043e \u043d\u043e\u0447\u0430\u043c, '+
    '\u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0430\u0434\u0443 \u0441 \u043d\u0435\u0439 \u'+
    '043d\u0435\u0442. \u041a\u043e\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u0435\u0435 \u043e\u0'+
    '434\u043e\u043b\u0435\u0442\u044c - \u043d\u0430\u0433\u0440\u0430\u0436\u0443!","reward_money":30,"backgrou'+
    'nd":"1","name":"\u0422\u044e\u0445\u0430 \u0437\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b\u0430","rewa'+
    'rd_exp":5,"npc":"3","req_energy":"10","min_lvl":"3","id":"14","reward_exp_base":5,"reward_money_base":15,"cl'+
    'an_exp_boost":0,"clan_money_boost":0,"game_exp_boost":0,"game_money_boost":15}],"bonus":{"type":"2","enabled'+
    '":"1","silver_multiplier":"1","experience_nultiplier":"0","experience_multiplier":"0"}}}';
var
  obj1: ISuperObject;
begin
  obj1 := SO(cJSON);
  Edit4.Text := obj1.S['adventures.list[0].reward_exp'];
  Edit5.Text := obj1.S['adventures.list[1].reward_exp'];
  Edit6.Text := obj1.S['adventures.list[2].reward_exp'];
end;

P.S. Только в модуле "superobject.pas" в строке 5638 нужно убрать директиву {$Q+}, иначе в старых версиях Delphi (в частности в Delphi 7) будет вылетать ошибка "Integer overflow".
Ответить с цитированием
  #6  
Старый 08.06.2014, 23:39
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

огромное спасибо, какие модули подключать надо?
Ответить с цитированием
  #7  
Старый 08.06.2014, 23:49
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
Восклицание

Огромнейшее спасибо, разобрался!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter