Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Курсы $ и евро.


Crazy monkey ©   (2006-09-25 16:55:00) 

Необходимо иметь базу данных курса евро и доллара (по данным ЦБ) на каждый день. Также нужно рассчитать среднее арифм. указанных валют. Каким наиболее эффективным способом выполнить данную задачу? Сейчас я просто через Adotable компоненты работаю с таблицей вручную забивая данные, которые в свою очередь брал на рбк. Как можно иначе программно собирать эту информацию.


Crazy monkey   (2006-09-26 13:18:00) [1]

2 Reindeer Moss Eater
Спасибо! И РЕСПЕКТ!


Reindeer Moss Eater   (2006-09-26 13:09:00) [2]

Project->Import Type Library
В списке выбираешь MSXML версии 3.0 (или другой)
и жмешь Create Unit
После этого в Delphi\Imports появится модуль MSXML2_TLB.pas, который и следует включить в uses


Crazy monkey   (2006-09-26 12:12:00) [3]

Дико извеняюсь, конечно, за ламерский вопрос, но видимо надо что-то в uses добавить поскольку не хочет работать. Не знает ни что такое IXMLDomNode ни CoDomDocument? В чем проблема?


Reindeer Moss Eater   (2006-09-26 12:02:00) [4]

Лучше все же через XPath

procedure ShowCurrencyRate(const ANumCode : string);
var iNode : IXMLDomNode;
begin
with CoDomDocument.Create do
 begin
  Async := False;
  if Load(' http://www.cbr.ru/scripts/XML_daily.asp') then
   begin
    iNode := selectSingleNode(Format('ValCurs/Valute[NumCode="%s"]',[ANumCode]));
    if Assigned(iNode) then
     begin
      if Assigned(iNode.selectSingleNode('Name')) and Assigned(iNode.selectSingleNode('Value'))then
       ShowMessage(iNode.selectSingleNode('Name').Text + ' ' + iNode.selectSingleNode('Value').text);
     end;
   end;
 end;
end;


Crazy monkey   (2006-09-26 11:58:00) [5]

2 Reindeer Moss Eater

Спасибо и респект. Можно еще попросить Вас пример того как:
"идти сверху вниз по иерархии и добраться до своих долларов". Боюсь сам не разберусь, а код очень бы мне помог.

Заранее спасибо.


Reindeer Moss Eater   (2006-09-26 11:29:00) [6]

Типа "я выкачал все курсы, а мне нужно только доллары, скажите как закачать все что не нужно обратно?"

У TXMLDocument есть рутовый узел. У него дочерние ноды. У дочерних нодов свои дочерние ноды. У каждого нода могут быть атрибуты.
Итого: идешь сверху вниз по иерархии и добираешься до своих долларов.
Это если с использованием TXMLDocument (который не умеет использовать XPath).
Если импортировать библиотеку типов и воспользоваться IXMLDomDocument2, то доллары можно достать одним вызовом.

with CoDomDocumentCreate do
begin
 Load(<текст_xml>);
 SelectSingleNode('ValCurs/Valute[@ID="R01235"]/Value');
end;


Crazy monkey   (2006-09-26 11:17:00) [7]

Вот этот вопрос снимаем:
1. Чтобы выполнить указанный код, нужны какие-то компоненты или надо в uses добавлять нечто?

Ясное дело если указано TXMLDocument, то какой компонент использовать понятно. Вопрос как быть дальше. В окне появляется информация по всем валютам. Как быть дальше? Как оставить только евро и доллары?


Crazy monkey   (2006-09-26 11:09:00) [8]

ок. можно мне новичку по подробней объяснить происходящее. Вот этот код:
with TXMLDocument.Create(nil) do
begin
FileName := ' http://www.cbr.ru/scripts/XML_daily.asp?date_req=01.01.2006';
Active := True;
ShowMessage(xml.Text);
end;

Он судя по всему грузит все курсы на определенную дату. А потом по иерархии нодов (кстати, что это за зверь такой?) надо выбрать то, что нужно. В связи с этим просьба:
1. Чтобы выполнить указанный код, нужны какие-то компоненты или надо в uses добавлять нечто?
2. Как работать с этой самой иерархией нодов?

Вопросы ламерские, но надеюсь кто-нить великодушно объяснит.


Reindeer Moss Eater   (2006-09-26 00:20:00) [9]

Может есть у кого пример? Или может статью посоветуете?
Зачем тебе статья или пример, если ты читать не умеешь?
Или в [8] не пример был?


Leonid Troyanovsky   (2006-09-25 23:09:00) [10]


> Crazy monkey   (25.09.06 22:58) [9]

> Или может статью посоветуете?


http://www.cbr.ru/scripts/root.asp

--
Regards, LVT.


Crazy monkey   (2006-09-25 22:58:00) [11]

Я искал в сети что-нить подходящее под мой вопрос, но так и не нашел не одного примера. Может есть у кого пример? Или может статью посоветуете?


Reindeer Moss Eater   (2006-09-25 19:58:00) [12]

with TXMLDocument.Create(nil) do
begin
 FileName := ' http://www.cbr.ru/scripts/XML_daily.asp?date_req=01.01.2006';
 Active := True;
 ShowMessage(xml.Text);
end;

Дальше прыгаем по иерархии нодов, или, если предпочитаем XPath, то действуем через IXMLDomDocument2


ProgRAMmer Dimonych   (2006-09-25 18:32:00) [13]

Короче, не совсем для начинающих эта тема, IMHO.

Придётся освоить работу с инетом из Дельфей - это раз. В принципе можно поискать для этого специальные компоненты. Второе: скорее всего, получив содержимое страницы, обработать его, чтобы выделить курсы валют - это два. (Работа со строками - как минимум.) Дальше - проще. Формула для вычисления среднего арифметического:

X = (a+b)/2

Только, IMHO, без всяких ADO, ручками, было бы проще (в смысле интереснее).

По отдельным пунктам, вызывающим вопросы, можно попробовать ( не увлекаясь!!!) создать отдельные ветки здесь же. Короче, чем смогу - помогу.


zdm   (2006-09-25 18:15:00) [14]


>
> Dmitrij_K   (25.09.06 17:00) [1]
> через http


> Crazy monkey   (25.09.06 17:13) [2]
> можно по подробней?

ты-же реально задаешь вопрос, "где-бы мне хватануть инфу о курсах", и ещё добляешь , "что из инета", ну что тебе тогда не понятно про "http" ?


zdm   (2006-09-25 18:08:00) [15]

IdIcmp..-компоненты например поюзай.


zdm   (2006-09-25 18:04:00) [16]


> Интересно, почему когда нужны курсы ЦБ, люди идут на РБК?

Действительно


Reindeer Moss Eater   (2006-09-25 18:01:00) [17]

которые в свою очередь брал на рбк.

Интересно, почему когда нужны курсы ЦБ, люди идут на РБК?

http://www. cbr.ru/scripts/XML_daily.asp


Crazy monkey   (2006-09-25 17:13:00) [18]

можно по подробней?


Dmitrij_K   (2006-09-25 17:00:00) [19]

через http


Наверх

Титульная страница Поиск, карта сайта Написать письмо