Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Rroorr12
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 3
1

Получение курсов валют из интернета

16.01.2019, 19:08. Просмотров 840. Ответов 4

Помогите пожалуйста. Я пишу программу, которая конвертирует валюту. Но мне нужно что бы Курс валют был настоящим(online). Следователь я хотел узнать возможно ли на PascalABC брать данные из интернета. Если да, то как?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2019, 19:08
Ответы с готовыми решениями:

Обновление данных справочников банков и курсов валют без интернета
Здравствуйте! Есть две базы 1с на двух компьютерах. Конфигурации обоих баз одинаковые. На одном...

Загрузка курсов валют!
Если это комуто интересно то пишите на мыло или стучите в асю договоримся!

Импорт курсов валют
Доброго времени суток! Нужна помощь в составлении кода, т.к. сам вообще мало чего понимаю в коде...

Парсер курсов валют
Здравствуйте, не могли бы вы помочь, нужно написать скрипт который будет заходить на сайт ЦБ...

Javascrypt курсов валют
ДОБРОГО ВРЕМЕНИ СУТОК! Я ПО ПОВОДУ javascrypt! Есть рабочий код вывода курсов валют на для...

4
Sun Serega
313 / 203 / 115
Регистрация: 07.04.2017
Сообщений: 999
16.01.2019, 21:38 2
Вот так можно скачивать данные в виде массива байт/файла:

Pascal
1
2
3
4
5
begin
  var w := new System.Net.WebClient;
  var data := w.DownloadData('http://www.site_name/page_name');
  w.DownloadFile('http://www.site_name/page_name', 'file.name');
end.
Но этот способ скачивает исходную версию страницы. То есть если данные о курсе валют загружаются на страницу после её открытия - их не скачает. А большинство страниц в интернете именно так и делают. Вам нужно найти в интернете файл/базу данных из которой можно скачивать сами данные напрямую.

Так же, для скачивания некоторых страниц может понадобится по особому настроить переменную w. К примеру, страница может потребовать какой то там сертификат. И вот надо включить его добавление к запросу... Или что то типо того. Я не сильно в этом разбираюсь, но когда мне понадобилось программно скачать репозитория с гитхаба в виде архива - что то особое пришлось сделать. Тогда я нашёл информацию на StackOwerflow.
1
Rroorr12
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 3
18.01.2019, 22:54  [ТС] 3
Sun Serega, Не помогло. Как не пробовал ни с 1 сайтом не получается... Есть другие варианты?!
0
Sun Serega
313 / 203 / 115
Регистрация: 07.04.2017
Сообщений: 999
19.01.2019, 11:41 4
Лучший ответ Сообщение было отмечено Rroorr12 как решение

Решение

Ну как это. Каким способом не скачивайте - вам всё равно нужен источник в интернете.
Я вам сказал, ищите не сайты на которых динамично показывается курс валют, а что то статичное, вроде файла.
Можно, в принципе, ещё через Ctrl+Shift+C поискать откуда сайт загружает информацию, и вот то и скачивать.

Добавлено через 11 часов 39 минут
Не знаю где вы искали, но меня вот стак оверфлоу как всегда спасает:
https://youtu.be/NSTcKyl-QrU

Сейчас переведу на паскаль (хотя вы и сами можете, ибо C# почти строчка в строчку переводится).

Добавлено через 21 минуту
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{$reference System.Xml.dll}
 
uses System.Xml;
 
function ПолучитьКурсВалют(var ВремяПоследнегоОбновления: DateTime): Dictionary<string, decimal>;
begin
  Result := new Dictionary<string, decimal>;
  
  var xmlr := XmlReader.Create('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
  xmlr.ReadToFollowing('Cube');
  while xmlr.Read do
  begin
    if xmlr.NodeType <> XmlNodeType.Element then continue;
    
    if xmlr.GetAttribute('time') <> nil then
      
      //я сделал чтоб сразу парсило, зачем в отдельной переменной сохранять
      ВремяПоследнегоОбновления := DateTime.Parse(xmlr.GetAttribute('time')) else
      
      Result.Add(
        xmlr.GetAttribute('currency'),
        decimal.Parse(
          xmlr.GetAttribute('rate'),
          System.Globalization.CultureInfo.InvariantCulture
        )
      );
    
  end;
  
  xmlr.Dispose;//Это то что вызывает using после выхода из него
  Result.Add('EUR', 1);
end;
 
begin
  var dt: DateTime;
  var kv := ПолучитьКурсВалют(dt);
  writeln($'Последнее обновление было {dt}');
  writeln($'Курс:');
  kv.PrintLines;
  
  writeln;
  var r := decimal(ReadlnReal('Введите рубли:'));
  writeln($'{r} рублей это {r/kv[''RUB'']*kv[''USD'']} долларов');
end.
0
Rroorr12
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 3
19.01.2019, 20:23  [ТС] 5
Sun Serega, Спасибо. Теперь всё работает.
0
19.01.2019, 20:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2019, 20:23

Обновление курсов валют
Доброе утро всем. В 1С Предприятие 8.3 не работает автоматическое обновление справочников валют и...

Парсер xml курсов валют ЦБ РФ
здравствуйте, мучаюсь не первый день, помогите разобраться с парсером xml ссылка на xml &lt;?xml...

Парсер курсов валют(Беларусь)
Нужен парсер курса валют из Цб Белоруссии и парсер погоды Солигорска, кто подскажет где искать? ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru