Задача. получить герб и флаг государства из базы 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
Procedure ShowPNGTOCanvas(cn:Tcanvas;Filename:string); var png:TPNGObject; begin png := TPNGObject.Create; // создаем png.LoadFromFile(Filename); // грузим ресурс cn.Draw(0, 0, png); // выводим png.Free; // высвобождаем
end;
// скачать файл через 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 .
|