Приветствую Вас Гость | RSS

Delphi заготовки

Понедельник, 13.05.2024, 23:17
Главная » 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

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 .
 


Просмотров: 2697 | Добавил: NetSoftWare | Рейтинг: 5.0/1
Всего комментариев: 4
4 ppu-prof_Sl  
0
Наша команда квалифицированных мастеров завершена предоставлять вам новаторские технологии, которые не только ассигнуруют прочную охрану от заморозков, но и подарят вашему домашнему пространству стильный вид.
Мы занимаемся с последними веществами, заверяя долгосрочный запас работы и прекрасные решения. Утепление облицовки – это не только экономия на прогреве, но и трепет о окружающей природе. Энергосберегающие технические средства, какие мы применяем, способствуют не только твоему, но и сохранению природных богатств.
Самое основополагающее: <a href=https://ppu-prof.ru/>Утепление фасада дома снаружи цена работы</a> у нас стартует всего от 1250 рублей за квадратный метр! Это доступное решение, которое метаморфозирует ваш хаус в подлинный тепличный уголок с скромными затратами.
Наши достижения – это не единственно изоляция, это постройка области, в где все аспект отразит ваш уникальный модель. Мы примем все все твои запросы, чтобы переделать ваш дом еще более гостеприимным и привлекательным.
Подробнее на <a href=https://ppu-prof.ru/>http://ppu-prof.ru</a>
Не откладывайте занятия о своем корпусе на потом! Обращайтесь к профессионалам, и мы сделаем ваш помещение не только теплым, но и по последней моде. Заинтересовались? Подробнее о наших делах вы можете узнать на официальном сайте. Добро пожаловать в сферу комфорта и качества.

3 ppu-prof_Lox  
0
Забота о жилье - это забота о удобстве. Изоляция наружных поверхностей - это не только модный облик, но и гарантия сохранения тепла в вашем удобном уголке. Наша команда, наша команда профессионалов, предлагаем вам превратить ваш дом в прекрасное место для жизни.
Наши творческие решения - это не просто утепление, это искусство с каждым слоем. Мы придерживаемся совершенному сочетанию между визуальным восприятием и практической целесообразностью, чтобы ваше жилье стало не только комфортным, но и великолепным.
И самое важное - удовлетворительная стоимость! Мы верим, что профессиональные услуги не должны быть неприемлемо дорогими. <a href=https://ppu-prof.ru/>Утепление коттеджа снаружи цена</a> начинается всего по цене от 1250 рублей за квадрат.
Использование современных технологий и высококачественных материалов позволяют нам создавать теплоизоляцию, которая долго служит и надежна. Позабудьте о проблеме холодных стен и избегайте дополнительных расходов на отопление - наше утепление станет вашим надежным барьером от холода.
Подробнее на <a href=https://ppu-prof.ru/>http://ppu-prof.ru</a>
Не откладывайте на потом заботу о радости жизни в вашем жилье. Обращайтесь к экспертам, и ваш дом преобразится настоящим произведением искусства, которое принесет вам тепло и удовлетворение. Вместе мы создадим комфортабельное жилье, где вам будет по-настоящему комфортно!

2 NetSoftWare  
0
пример скачивания файла взят с сайта и адаптирован http://www.interface.ru/home.asp?artId=22170

пример отображения картинки из png взять с сайта
http://delphidevelop.ru/publ/12-1-0-174
там же взят компонент для открытия png файла http://delphidevelop.ru/load/19-1-0-36

1 NetSoftWare  
0

Имя *:
Email *:
Код *: