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

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

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

[Delphi] Вопрос на засыпку 2
  #1  
Старый 04.03.2010, 02:51
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию [Delphi] Вопрос на засыпку 2

конечно туповато такое спрашивать, однако мне нужна помощь ваша. вопрос. Как с помощью операторов Copy, Pos, Delete, Length сделать список из этого?

Код:
{"countries":[[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,"Боливия"]
RegExpr не предлогать))
 
Ответить с цитированием

  #2  
Старый 04.03.2010, 03:44
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

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

Код (в коде думаю ты сам разберешься, а если не сможешь разобраться -> моя личка открыта):
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
 s:string;
 current_int, current_name:string;
 goroda:array [1..100] of string;//за назв. переменной не ругать  :D 
begin
 s:='{"countries":[[19,"Австралия"],[20,"Австрия"],[5,"Азербайджан"],[21,"Албания"]';

 delete(s, 1, 14);

 while 1<>2 do
  begin
    current_int:=copy(s, pos('[', s)+1, pos(',', s)-1-pos('[', s));
    current_name:=copy(s, pos('"', s)+1, pos('"]', s)-1-pos('"', s));
    goroda[strtoint(current_int)]:=current_name;
    if length(s)-pos('"]', s)=1 then
     begin
       break;
     end
    else
     begin
       delete(s, 1, 1+length(current_int)+2+length(current_name)+3);
     end;
   end;
end;

Последний раз редактировалось wolmer; 05.04.2010 в 21:34..
 
Ответить с цитированием

  #3  
Старый 04.03.2010, 10:57
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

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

Цитата:
RegExpr не предлогать))
Интересно, почему?
 
Ответить с цитированием

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

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

Цитата:
Сообщение от GhostOnline  
Интересно, почему?

зачем мне RegExpr для таких протстых операций?))
 
Ответить с цитированием

  #5  
Старый 04.03.2010, 12:07
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Цитата:
Сообщение от RedFern.89  
конечно туповато такое спрашивать, однако мне нужна помощь ваша. вопрос. Как с помощью операторов Copy, Pos, Delete, Length сделать список из этого?
Какого вида список нужно сделать?
 
Ответить с цитированием

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

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

при загрузке больших данных, вылетает с ошибкой is not valid integer value. я попробую сам разобраться. спасибо!
 
Ответить с цитированием

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

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

Цитата:
Сообщение от M_script_  
Какого вида список нужно сделать?

просто список стран в столбик))
 
Ответить с цитированием

  #8  
Старый 04.03.2010, 12:29
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

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

Цитата:
Сообщение от RedFern.89  
зачем мне RegExpr для таких протстых операций?))

Ога, для таких простых операций есть же античат
 
Ответить с цитированием

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

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

я могу и сам это сделать. друзей вк получилось разделить)) ну если тебе в лом помочь мне - ладно. я пойму, но наезжать то зачем?
 
Ответить с цитированием

  #10  
Старый 04.03.2010, 13:09
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Вот решение с помощью TStringList:
Код:
	
AnsiString sTemp = "";
TStringList* CountryList = new TStringList;
sTemp = "{\"countries\":[[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,\"Боливия\"]";
sTemp.Delete(1, sTemp.Pos("[")); // удаляем лишнее
CountryList->Delimiter = ','; // указываем разделитель
CountryList->DelimitedText = sTemp; // текст разбивается на строки, разделителем считаются кавычки  и запятая
for(int i=0; i < CountryList->Count; ++i) // перебираем все полученные строки
  	if(CountryList->Strings[i].Pos("[") || CountryList->Strings[i].Pos("]")) // если в строке есть квадратные скобки, удаляем ее
  		CountryList->Delete(i--);
Memo1->Lines->AddStrings(CountryList); // выводим список в мемо
Edit1->Text = CountryList->CommaText; // или в едит через запятую
delete CountryList;
Переписать с сиплюса на делфи не сложно.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокировка WMID. Рекомендации на вопрос "Что делать?" corp. Howard ltd Платежные системы: Webmoney, Yandex Деньги, РБК Деньги и т. д. 94 31.05.2010 23:32
Вопрос про сливы и тп Sulf aka Joker Болталка 0 15.01.2010 16:07
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопрос по Php и Html Archie PHP, PERL, MySQL, JavaScript 9 26.05.2006 16:43



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ