Главная » 2012»Май»10 » Пример программы получения информации с Wiki массив стран мира и их флаги
14:10
Пример программы получения информации с Wiki массив стран мира и их флаги
Задача. получить герб и флаг государства из базы Wiki
определим структуру данная статья и пример поможет ответить на вопросы
Как скачать файл через TIdHTTP как получить строчку без тегов Htm Как получить Страну и Столицу страны с сайта Wiki. Как скачать и отобразить PNG картинку Как переделать PNG картинку в BMP картинку Как получить информацию о домене страны Как получить информацию о нац. валюте страны и другие данные о стране с сайта http://ru.wikipedia.org/wiki/
const // массив стран мира WorldListForString : array [0..258] of string =( 'Австралия','Австрия','Азавад','Азад Кашмир','Азербайджан','Азорские острова','Аландские острова','Албания','Алжир','Американское Самоа','Ангилья', 'Ангола','Андорра','Антигуа и Барбуда','Аргентина','Армения','Аруба','Афганистан','Багамские Острова','Бангладеш','Барбадос', 'Бахрейн','Белоруссия','Белиз','Бельгия','Бенин','Бермудские острова','Болгария','Боливия','Босния и Герцеговина','Ботсвана', 'Бразилия','Британская территория в Индийском океане','Бруней','Буркина-Фасо','Бурунди','Бутан','Вануату','Ватикан','Великобритания','Венгрия', 'Венесуэла','Британские Виргинские острова','Американские Виргинские острова','Восточный Тимор','Вьетнам','Габон','Гавайи','Республика Гаити','Гайана','Гамбия', 'Гана','Гваделупа','Гватемала','Гвинея','Гвинея-Бисау','Германия','Гернси','Гибралтар','Гондурас','Гонконг', 'Гренада','Гренландия (административная единица)','Греция','Грузия','Гуам','Дания','Джерси','Джибути','Доминика','Доминиканская Республика', 'Египет','Замбия','Зимбабве','Израиль','Индия','Индонезия','Иордания','Ирак','Иран','Ирландия', 'Исландия','Испания','Италия','Йемен','Кабо-Верде','Казахстан','Каймановы острова','Камбоджа','Камерун','Канада', 'Канарские острова','Катар','Кения','Республика Кипр','Киргизия','Кирибати','Китайская Народная Республика','Китайская Республика','Кокосовые острова','Колумбия', 'Коморы','Республика Конго','Демократическая Республика Конго','Корейская Народно-Демократическая Республика','Республика Корея','Республика Косово','Коста-Рика','Кот-д’Ивуар','Куба','Кувейт', 'Острова Кука','Кюрасао','Лаос','Латвия','Лесото','Либерия','Ливан','Ливия','Литва','Лихтенштейн', 'Люксембург','Маврикий','Мавритания','Мадагаскар','Мадейра','Майотта','Республика Македония','Малави','Малайзия','Мали', 'Мальдивы','Мальта','Марокко','Мартиника','Маршалловы Острова','Мексика','Мелилья','Федеративные Штаты Микронезии','Мозамбик','Молдавия', 'Монако','Монголия','Монтсеррат','Мьянма','Остров Мэн','Нагорно-Карабахская Республика','Намибия','Науру','Непал','Нигер', 'Нигерия','Нидерланды','Никарагуа','Ниуэ','Новая Зеландия','Новая Каледония','Норвегия','Остров Норфолк','Объединённые Арабские Эмираты','Оман', 'Пакистан','Палау','Палестинская национальная администрация','Панама','Папуа — Новая Гвинея','Парагвай','Перу','Острова Питкэрн','Польша','Португалия', 'Приднестровская Молдавская Республика','Пуэрто-Рико','Реюньон','Остров Рождества (Австралия)','Россия','Руанда','Румыния','Сальвадор','Самоа','Сан-Марино', 'Сан-Томе и Принсипи','Сахарская Арабская Демократическая Республика','Саудовская Аравия','Свазиленд','Острова Святой Елены, Вознесения и Тристан-да-Кунья','Княжество Себорга','Северные Марианские острова','Турецкая Республика Северного Кипра','Сейшельские Острова','Сенегал', 'Сен-Бартельми','Сен-Мартен (владение Франции)','Сен-Пьер и Микелон','Сент-Винсент и Гренадины','Сент-Китс и Невис','Сент-Люсия','Сербия','Сеута','Силенд','Синт-Маартен', 'Сингапур','Сирия','Словакия','Словения','Соединённые Штаты Америки','Соломоновы Острова','Сомали','Сомалиленд','Судан','Суринам', 'Сьерра-Леоне','Таджикистан','Таиланд','Танзания','Тёркс и Кайкос','Того','Токелау','Тонга','Тринидад и Тобаго','Тувалу', 'Тунис','Туркмения','Турция','Уганда','Узбекистан','Украина','Уоллис и Футуна','Уругвай','Фарерские острова','Фиджи', 'Филиппины','Финляндия','Фолклендские острова','Франция','Французская Гвиана','Французская Полинезия','Французские Южные и Антарктические Территории','Хорватия','Центральноафриканская Республика','Чад', 'Черногория','Чехия','Чили','Швейцария','Швеция','Шпицберген','Шри-Ланка','Эквадор','Экваториальная Гвинея','Эритрея', 'Эстония','Эфиопия','Южная Георгия и Южные Сандвичевы острова','Республика Южная Осетия','Южно-Африканская Республика','Южный Судан','Ямайка','Япония');
Tcountry=record Caption:string; // название страны FlagURL:string; // ссылка на флаг в сети интернет end;
var
CountryList:array of Tcountry; CountryListCount:integer;
данные по массиву флагов берем http://ru.wikipedia.org/wiki/%D0%A1%D1% 82%D1%80%D0%B0%D0%BD%D1%8B_%D0%BC%D0%B8%D1%80%D0%B0
// копировать текст из строки S начинаес с подстроки s1 до строки s2
Function CopyTextFromTeg(s:string;s1,s2:string):string; var i1,i2:integer; sm:string; begin i1:=pos(s1,s); sm:=copy(s,i1,length(s)); i2:=pos(s2,sm)+i1-1; result:=copy(s,i1+length(s1),i2-i1-length(s1)); end;
// получить текст без тегов
Function NotTegText(s:string):string; var x:integer; s2:string; l:integer; beg1,beg2:boolean; begin l:=length(s); beg1:=true; beg2:=beg1; s2:=''; for X:=1 to l do if s[x]='<' then beg1:=false else if s[x]='>' then beg1:=true else if s[x]='&' then beg2:=false else if s[x]=';' then beg2:=true else if beg1 and beg2 then s2:=s2+s[x]; result:=s2; end;
// Добавить название страны и ссылку на картинку флага Procedure AddFloag(FlagURL:string;Caption:string); begin if FlagURL<>'' then if Caption<>'' then begin CountryListCount:=CountryListCount+1; Setlength(CountryList,CountryListCount); CountryList[CountryListCount-1].Caption:=caption; CountryList[CountryListCount-1].FlagURL:=FlagURL;
end; end;
функция отображения файла формата PNG на форме Canvas
// скачать файл через TIdHTTP procedure DownloadFile(http:TIdHTTP;Url:string;Filename:string); var str:TFileStream; begin //Поток для сохранения str:=TFileStream.Create(Filename, fmCreate); try //Качаем if pos('http:',url)=0 then url:='http:'+url; http.Get(url,str); finally //Нас учили чистить за собой str.Free; end; end;
пример содержит TImageList со списком флагов стран мира в каталоге map - результаты работы
п.с. для корректного отображения текста запроса с русскими / кириллическими символами
применил следующий ход
form1.IdHTTP1.HTTPOptions:=[hoForceEncodeParams]; // выставляем параметры для IdHTTP1 s:=form1.ComboBoxEx1.Text; // текст в нашем случаи название страны
for X:=1 to length(s) do if s[x]=' ' then s[x]:='_'; // заменяем все пробелы на подчеркивания
StrList.Text:=form1.IdHTTP1.Get('http://ru.wikipedia.org/wiki/'+s); // получаем адрес страницы о стране с сайта Wikipedia .
Наша команда квалифицированных мастеров завершена предоставлять вам новаторские технологии, которые не только ассигнуруют прочную охрану от заморозков, но и подарят вашему домашнему пространству стильный вид. Мы занимаемся с последними веществами, заверяя долгосрочный запас работы и прекрасные решения. Утепление облицовки – это не только экономия на прогреве, но и трепет о окружающей природе. Энергосберегающие технические средства, какие мы применяем, способствуют не только твоему, но и сохранению природных богатств. Самое основополагающее: <a href=https://ppu-prof.ru/>Утепление фасада дома снаружи цена работы</a> у нас стартует всего от 1250 рублей за квадратный метр! Это доступное решение, которое метаморфозирует ваш хаус в подлинный тепличный уголок с скромными затратами. Наши достижения – это не единственно изоляция, это постройка области, в где все аспект отразит ваш уникальный модель. Мы примем все все твои запросы, чтобы переделать ваш дом еще более гостеприимным и привлекательным. Подробнее на <a href=https://ppu-prof.ru/>http://ppu-prof.ru</a> Не откладывайте занятия о своем корпусе на потом! Обращайтесь к профессионалам, и мы сделаем ваш помещение не только теплым, но и по последней моде. Заинтересовались? Подробнее о наших делах вы можете узнать на официальном сайте. Добро пожаловать в сферу комфорта и качества.
Забота о жилье - это забота о удобстве. Изоляция наружных поверхностей - это не только модный облик, но и гарантия сохранения тепла в вашем удобном уголке. Наша команда, наша команда профессионалов, предлагаем вам превратить ваш дом в прекрасное место для жизни. Наши творческие решения - это не просто утепление, это искусство с каждым слоем. Мы придерживаемся совершенному сочетанию между визуальным восприятием и практической целесообразностью, чтобы ваше жилье стало не только комфортным, но и великолепным. И самое важное - удовлетворительная стоимость! Мы верим, что профессиональные услуги не должны быть неприемлемо дорогими. <a href=https://ppu-prof.ru/>Утепление коттеджа снаружи цена</a> начинается всего по цене от 1250 рублей за квадрат. Использование современных технологий и высококачественных материалов позволяют нам создавать теплоизоляцию, которая долго служит и надежна. Позабудьте о проблеме холодных стен и избегайте дополнительных расходов на отопление - наше утепление станет вашим надежным барьером от холода. Подробнее на <a href=https://ppu-prof.ru/>http://ppu-prof.ru</a> Не откладывайте на потом заботу о радости жизни в вашем жилье. Обращайтесь к экспертам, и ваш дом преобразится настоящим произведением искусства, которое принесет вам тепло и удовлетворение. Вместе мы создадим комфортабельное жилье, где вам будет по-настоящему комфортно!