Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616

Работа с метеоданными формата XML

22.03.2018, 17:05. Показов 2968. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Подскажите пожалуйста как реализовать следующий момент. Занимаюсь одной програмкой, которая получает метеоданные с интернета (http://www.eurometeo.ru/), так как нигде больше данных о погоде в формате XML в свободном доступе не нашел.
Написал небольшое приложение, которое получает данные с вышеуказанного сайта, и выводит их в компоненты на форме (EDIT):

Код собственно того, что у меня получилось и работает:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('http://www.eurometeo.ru/russia/rostovskaya-oblast/rostov-na-donu/export/xml/data/');
XMLDocument1.Active := true;
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['cityname'].Text;
Edit2.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['citytime'].Text;
Edit3.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['datetime'].Text;
Edit4.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['pressure'].Text;
Edit5.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['temperature'].Text;
Edit6.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['humidity'].Text;
Edit7.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['cloudcover'].Text;
Edit8.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['windspeed'].Text;
Edit9.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['windgust'].Text;
Edit10.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['winddir'].Text;
Edit11.Text := XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['step'].ChildNodes['precipitation'].Text;
XMLDocument1.Active := false;
end;
Вот теперь стоит задача такого плана, как прописать условие в коде таким образом, чтобы допустим когда программа скачивает и заполняет данными (EDIT c 1 по 11) то запонялись еще три дополнительных (EDIT 12 - 14) следующим образом к примеру.
Если в (EDIT7) допустим заносится значение от 0 до 15, то в (EDIT12) - появляется текст ЯСНО, если от 15 до 35 - ПЕРЕМЕННАЯ ОБЛАЧНОСТЬ и т.д.; в (EDIT8) заносится значение от 0 до 0,2 - появляется текст ШТИЛЬ, если от 0,3 до 1,5 - ТИХИЙ.

И сразу еще попутный вопрос. Подскажите идею как реализовать смену значений ссылок для скачивания самих данных, то есть как в:
Delphi
1
XMLDocument1.LoadFromFile('http://www.eurometeo.ru/russia/rostovskaya-oblast/rostov-na-donu/export/xml/data/');
заменять сам адрес, если их может быть несколько. Была идея реализовать все через значения CASE COMBOBOX, правда не знаю на верном ли я пути, может быть еще есть какие-нибудь пути решения или варианты.

Спасибо за помощь заранее!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2018, 17:05
Ответы с готовыми решениями:

Редакторы формата xml
Какие есть текстовые процессоры/редакторы, хранящие свои документы в формате XML или подобном ? Добавлено через 27 секунд Имеется...

XML ошибка формата
не знаю куда еще написать, браузер при открытии xml пишет XML Parsing Error: not well-formed Location:...

Перевод файла формата txt в xml
Честно сразу скажу, что ни разу с xml до этого не сталкивалась. И во сейчас для загрузки в программу Документы ПУ 5 необходимо все...

27
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
23.03.2018, 11:32
Студворк — интернет-сервис помощи студентам
а почему мой вариант не устроил?
Delphi
1
2
3
4
if TryStrToCurr(Edit8.Text, v) then  begin
  if (v>=1.5) and (v<=3.4) then 
    Edit13.Text:='Штиль';
end;
потому что не компилилось из-за того, что не была объявлена переменная v?
1
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
23.03.2018, 11:46  [ТС]
Цитата Сообщение от Алекcей Посмотреть сообщение
потому что не компилилось из-за того, что не была объявлена переменная v?
Видимо да, как прописать правильно, подскажи если не трудно?

procedure TForm1.Button1Click(Sender: TObject);
var
v : ...... ?

Добавлено через 56 секунд
Цитата Сообщение от D1973 Посмотреть сообщение
Ни на какие мысли не наводит?
Почитал уже, так нельзя указывать числа десятичные.
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
23.03.2018, 11:50
см. пост #18
0
Модератор
 Аватар для D1973
9951 / 6486 / 2461
Регистрация: 21.01.2014
Сообщений: 27,482
Записей в блоге: 3
23.03.2018, 13:40
1. Так нельзя указывать числа десятичные - это вы прочитали...
2. Что-то не припоминаю я такого множества: Set of Float...
3. Даже если предположить, что конечное множество вещественных чисел существует (не может быть, но допустим), то почему Вы текст из Эдита приводите к целому (StrToInt) и пытаетесь проверять, во множестве ли оно вещественных чисел?
1
 Аватар для Flip
335 / 173 / 67
Регистрация: 25.02.2018
Сообщений: 616
23.03.2018, 14:49  [ТС]
Алексей все сделал точно так, как ты написал, но ничего не происходит, т.е. в EDIT13 значение не выводится вообще, хотя и компилируется нормально, без ошибок. Специально добавил на форму два других EDIT, кнопку переписал отдельно этот участок кода результата нет.
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button2Click(Sender: TObject);
     var
 v: Currency;
 begin
if TryStrToCurr(Edit15.Text, v) then  begin
  if (v>=0) and (v<=0.2) then
    Edit16.Text:='Штиль';
  if (v>=0.3) and (v<=1.5) then
    Edit16.Text:='Тихий';
end;
Не знаю даже что может такое быть.

Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
то почему Вы текст из Эдита приводите к целому (StrToInt) и пытаетесь проверять, во множестве ли оно вещественных чисел?
Понял что затупил, так нельзя делать ибо получается, что я пытаюсь искать число в множестве, в котором его заведомо не существует.
0
Модератор
 Аватар для D1973
9951 / 6486 / 2461
Регистрация: 21.01.2014
Сообщений: 27,482
Записей в блоге: 3
23.03.2018, 14:52
Алекcей, только непонятно, почему Currency?

Добавлено через 1 минуту
Цитата Сообщение от Ашотик2018 Посмотреть сообщение
искать число в множестве, в котором его заведомо не существует
и не только! Множества такого просто не существует!
1
Эксперт Pascal/Delphi
 Аватар для droider
4893 / 2826 / 867
Регистрация: 04.10.2012
Сообщений: 10,278
23.03.2018, 16:12
Цитата Сообщение от Алекcей Посмотреть сообщение
Delphi
1
Currency
это денежный тип данных.
1
23.03.2018, 18:18

Не по теме:

del

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2018, 18:18

Создать XML файл заданного формата
Доброе утро. Подскажите пожалуйста как в Powershell создать xml заданного формата. &lt;?xml version=&quot;1.0&quot;...

Импорт данных формата XML в MS Access
Подскажите, пожалуйста, причину ошибки: Run-time error '31527' Path not found:...

Как открыть файл формата .xml?
Здравствуйте, подскажите пожалуйста.. у меня стоит мадкад 14. почему при открытии формата файла .xml выскакивает ошибка: &quot;failed to...

Загрузить данные в классы из файла формата xml
Всем привет. Пытаюсь загрузить данные из файлика в соответствующие классы (модели). &lt;?xml version=&quot;1.0&quot;...

Парсер данных из txt или xml формата
Здравствуйте, выполняю одно студенческое задание и немного стопорнулся в этом вопросе. Все не так просто как кажется, данный файл с базой ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru