![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Что средствами RAD Studio можно сотворить для выполнения задачи:
Каждые 24 часа сервис должен лезть на сайт ЦБРФ и забирать от туда курс валют, и запихивать его в Таблицу БД. Сервис? Один раз поставил и забыл. Или может быть ещё какие технологии вроде Windows "планировщика задач" есть для решения такой задачи? |
#2
|
||||
|
||||
![]() Да зачем перегружать систему дополнительными сервисами, как вы и сказали - планировщик для запуска обычного приложения.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Цитата:
Я почему к сервису больше склоняюсь: бывает такое, что в момент выполнения запланированного запуска программы интернет отсутствует. В итоге обновление курса в БД не происходит. Сделать запланированное действие раз в час, и в реестре хранить какой-нибудь ключ с информацией о том был ли обновлён курс на сегодняшний день или нет. Тогда всё равно остаётся 60мин, в которых люди не смогут нормально работать. В конце концов сервис будет висеть на Серверной машине. Я не думаю, что это будет дикий перегруз ![]() Кстати, код для реализации хранения Курса Валют EUR на основе SOAP: Статья по теме. Код:
procedure TForm1.GetDailyEUR(Sender: TObject); var DIS: DailyInfoSoap; XSDateTime: TXSDateTime; Res: GetCursOnDateResult; i: integer; begin DIS := GetDailyInfoSoap(); XSDateTime := TXSDateTime.Create; try XSDateTime.AsUTCDateTime := Now; Res := GetCursOnDateResult.Create; try with TXMLDocument.Create(Application) do try Active := True; DocumentElement := DIS.GetCursOnDateXML(XSDateTime).XMLNode; SaveToFile('DIS.xml'); for i := 0 to ChildNodes.FindNode('ValuteData') .ChildNodes.Count - 1 do begin if ChildNodes.FindNode('ValuteData').ChildNodes.Nodes[i] .ChildNodes.FindNode('VchCode').NodeValue = 'EUR' then Caption := ChildNodes.FindNode('ValuteData').ChildNodes.Nodes[i] .ChildNodes.FindNode('Vcurs').NodeValue; end; finally Free; end; finally Res.Free; end; finally XSDateTime.Free; end; end; Последний раз редактировалось Uniq!, 12.08.2014 в 10:41. |
#4
|
||||
|
||||
![]() Забавно, в стандартном планировщике не нашел возможности указать реакцию на ошибку. Если в модных версиях Windows ничего не изменилось, возможность реакции на ошибку -- годный аргумент для написания чего-то своего.
Не стоит путать форумы с богадельнями. © Bargest |
#5
|
||||
|
||||
![]() Еще можно сделать прогу, которая при отсутствии соединения будет уходить в сон на какое-то время (несколько минут) и пробовать снова несколько раз. Тогда эти 60 минут будут уменьшены до времени восстановления инета + несколько минут (в худшем случае).
jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
![]() Цитата:
при невозможности обновить данные следует повторять попытки. Пишу программы за еду. __________________ |