ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 04.03.2010, 13:37
GhostOnline
Участник форума
Регистрация: 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..
 

  #12  
Старый 04.03.2010, 15:20
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

спасибо парни! помогли!
 

  #13  
Старый 05.04.2010, 21:08
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Берешь любой JSON парсер и всё. Могу дать свою реализацию.
 

  #14  
Старый 05.04.2010, 21:48
JnK
Участник форума
Регистрация: 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(SenderTObject);
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)
 


Быстрый переход




ANTICHAT.XYZ