Войти или зарегистрироваться
Выберите удобный способ — аккаунт создастся автоматически.
Или войдите по логину и паролю
 |
|

04.03.2010, 13:37
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
С нами:
9152955
Репутация:
84
|
|
Входящая строка в edit1.text:
var
temp : TStringList;
res : tstringlist;
tmp : string;
I: Integer;
begin
temp := TStringList.Create;
res := TStringList.Create;
tmp := StringReplace(edit1.text, '{"countries":[[', '', [rfReplaceAll]);
tmp := StringReplace(tmp, '[', '', [rfReplaceAll]);
tmp := StringReplace(tmp, ']', '', [rfReplaceAll]);
temp.commatext := tmp;
i := 0;
while i < temp.Count do
begin
res.Add(temp[i] + '=' + temp[i+1]);
i := i + 2;
end;
В результате res имеет такой вид:
19=Австралия
20=Австрия
5=Азербайджан
21=Албания
22=Алжир
23=Американское Самоа
24=Ангилья
25=Ангола
26=Андорра
27=Антигуа и Барбуда
28=Аргентина
6=Армения
29=Аруба
30=Афганистан
31=Багамы
32=Бангладеш
33=Барбадос
34=Бахрейн
3=Беларусь
35=Белиз
36=Бельгия
37=Бенин
38=Бермуды
39=Болгария
40=Боливия
Тогда можно иметь такой доступ к номеру и стране:
res.NAmes[i] - номер
res.ValueFromindex[i] - страна
Чтобы просто выводился список стран:
while i < temp.Count do
begin
res.Add(temp[i+1]);
i := i + 2;
end;
Последний раз редактировалось GhostOnline; 04.03.2010 в 13:42..
|
|
|

04.03.2010, 15:20
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
С нами:
8582863
Репутация:
69
|
|
спасибо парни! помогли!
|
|
|

05.04.2010, 21:08
|
|
Познающий
Регистрация: 25.10.2009
Сообщений: 97
С нами:
8707843
Репутация:
15
|
|
Берешь любой JSON парсер и всё. Могу дать свою реализацию.
|
|
|

05.04.2010, 21:48
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
С нами:
10060964
Репутация:
52
|
|
PHP код:
function ParserBlock(var Page:string; const Param1,Param2:string):string;
var
BeginPos,
EndPos:integer;
begin
BeginPos:=AnsiPos(Param1,Page)+length(Param1);
delete(Page,1,beginPos-1);
BeginPos:=AnsiPos(Param1,Page)+length(Param1);
EndPos:=AnsiPos(Param2,Page);
Result:=copy(page,1,EndPos-1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=edit1.Text;
Delete(s,1,pos('[',s));
while (length(s)>2) do
begin
Memo1.Lines.Add(ParserBlock(s,'[',',')+#09+ParserBlock(s,'"','"'));
end;
end;
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|