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

Delphi Sources



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

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

Доброго времени суток Форумчане!
Есть такой вот текст(Responce Content):
Код:
":{"lvl":"100","progress":50483,"complete":150000},"gold":"10","silver":"187318","stop"

Помогите пожалуйста вывести значение "silver"(тут оно равно 187318) в label.
Сам справиться не могу
Ответить с цитированием
  #2  
Старый 06.06.2014, 14:51
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Можно так
Код:
const
 s: string = '":{"lvl":"100","progress":50483,"complete":150000},"gold":"10","silver":"187318","stop"';

procedure TForm1.Button1Click(Sender: TObject);
var
 tmp: string;
begin
 tmp:= Copy(s, Pos('"silver":"', s)+10, Length(s));
 Label1.Caption:= Copy(tmp, 0, Pos('",', tmp)-1);
end;
Ответить с цитированием
  #3  
Старый 06.06.2014, 16:52
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от XaXaTyH
Есть такой вот текст(Responce Content):
Код:
":{"lvl":"100","progress":50483,"complete":150000},"gold":"10","silver":"187318","stop"

Помогите пожалуйста вывести значение "silver"(тут оно равно 187318) в label.
Для работы с JSON я обычно использую superobject.
А ещё в новых версиях Delphi есть для этого модуль Data.DBXJSON.pas.
Ответить с цитированием
  #4  
Старый 06.06.2014, 22:11
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Можно так
Код:
const
 s: string = '":{"lvl":"100","progress":50483,"complete":150000},"gold":"10","silver":"187318","stop"';

procedure TForm1.Button1Click(Sender: TObject);
var
 tmp: string;
begin
 tmp:= Copy(s, Pos('"silver":"', s)+10, Length(s));
 Label1.Caption:= Copy(tmp, 0, Pos('",', tmp)-1);
end;

Дело в том, что данные значения меняются каждый раз.
Собственно увеличиваются.
Так как мне вывести данные в Label?
Ответить с цитированием
  #5  
Старый 06.06.2014, 22:56
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Выполняйте этот код при получении Responce Content текста или напр. в процедуре таймера - разрядов числа между "silver":" и ", может быть сколько угодно, эти метки ведь не изменяются, а считывается лишь то что между ними, хотя вариант от Полисмена выглядит наиболее предпочтительным, имхо
Ответить с цитированием
  #6  
Старый 06.06.2014, 23:09
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от Alegun
Можно так
Код:
const
 s: string = '":{"lvl":"100","progress":50483,"complete":150000},"gold":"10","silver":"187318","stop"';

procedure TForm1.Button1Click(Sender: TObject);
var
 tmp: string;
begin
 tmp:= Copy(s, Pos('"silver":"', s)+10, Length(s));
 Label1.Caption:= Copy(tmp, 0, Pos('",', tmp)-1);
end;

Спасибо, получилось.
Помогите еще с gold пожалуйста.
Ответить с цитированием
  #8  
Старый 07.06.2014, 23:00
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от XaXaTyH
...Помогите еще с gold пожалуйста.
Всё тоже самое, лишь заменить
Код:
...
tmp:= Copy(s, Pos('"gold":"', s) + 8, Length(s));
...
Ответить с цитированием
  #9  
Старый 08.06.2014, 00:14
XaXaTyH XaXaTyH вне форума
Прохожий
 
Регистрация: 06.06.2014
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Всё тоже самое, лишь заменить
Код:
...
tmp:= Copy(s, Pos('"gold":"', s) + 8, Length(s));
...

Спасибо большое, но в том запросе +10, а в этом +8.
Что это за числа?
Ответить с цитированием
  #10  
Старый 08.06.2014, 06:43
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от XaXaTyH
...Что это за числа?
Это не запрос. Тогда нужно объяснить что вообще происходит. Из исходной строки (в данном случае это s) копируется (через Copy) заданный индексами кусок в другую переменную tmp. Для Copy нужны следующие параметры - исходная строка, с какой позиции начать из неё копирование, и наконец, сколько знаков захватить. С помощью функции Pos находим положение подстроки ("gold":") в исходной, она возвращает позицию первого символа искомого фрагмента, в данном случае это даблкавычка ("), а всего их там 8, поэтому чтоб они не скопировались вместе с нужной инфой такую циферку и следует прибавить к полученной от Pos позиции, концевой указатель - до конца исходной строки (Length(s)). А дальше из получившегося куска копируется в label1 "чистое" значение, до этого в tmp лежит не очищенный фрагмент (10","silv...) т.е. в нём ещё остался мусор, - Pos возвращает позицию (",), из неё нужно вычесть 1 чтоб лишнего при копировании не захватить. Всё
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter