Текущий архив: 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.49 MB
Время: 0.041 c