ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

04.03.2010, 13:37
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме: 828081
Репутация:
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
Провел на форуме: 500264
Репутация:
69
|
|
спасибо парни! помогли!
|
|
|

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

05.04.2010, 21:48
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
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)
|
|
|
|