Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.046 c
2-1159357517
Anto}{a
2006-09-27 15:45
2006.10.15
delphi не находит нужного поля


2-1159424403
Прохожев М
2006-09-28 10:20
2006.10.15
Таблицы db, dbf


2-1159176559
mfender
2006-09-25 13:29
2006.10.15
AccesViolation в XML


2-1159348029
Yaral
2006-09-27 13:07
2006.10.15
Получить значение из реестра


5-1141035730
Pazitron_Brain
2006-02-27 13:22
2006.10.15
TEmbeddedWB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский