Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Курсы $ и евро.   Найти похожие ветки 

 
Crazy monkey   (2006-09-25 16:55) [0]

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


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

через http


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

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


 
Reindeer Moss Eater ©   (2006-09-25 18:01) [3]

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

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

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


 
zdm ©   (2006-09-25 18:04) [4]


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

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


 
zdm ©   (2006-09-25 18:08) [5]

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


 
zdm ©   (2006-09-25 18:15) [6]


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


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

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


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

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

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

X = (a+b)/2

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

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


 
Reindeer Moss Eater ©   (2006-09-25 19:58) [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;

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


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

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


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


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

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


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

--
Regards, LVT.


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

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


 
Crazy monkey   (2006-09-26 11:09) [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;

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

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


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

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

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


 
Reindeer Moss Eater ©   (2006-09-26 11:29) [14]

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

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

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


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

2 Reindeer Moss Eater

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

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


 
Reindeer Moss Eater ©   (2006-09-26 12:02) [16]

Лучше все же через 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 12:12) [17]

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


 
Reindeer Moss Eater ©   (2006-09-26 13:09) [18]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
15-1158772637
Новый_Юзер
2006-09-20 21:17
2006.10.15
Как убрать "приветствие" при загрузке виндовса?


15-1158845862
TUser
2006-09-21 17:37
2006.10.15
С днем рождения, 70 лет


1-1157642410
oleggar
2006-09-07 19:20
2006.10.15
webbrowser


2-1159384035
Tigraman
2006-09-27 23:07
2006.10.15
Получить список всех файлов и папок


4-1148993366
Grihan
2006-05-30 16:49
2006.10.15
Paint 32bit bitmap as disabled