Показать сообщение отдельно
  #3  
Старый 12.08.2014, 10:39
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от Страдалецъ
Да зачем перегружать систему дополнительными сервисами, как вы и сказали - планировщик для запуска обычного приложения.

Я почему к сервису больше склоняюсь: бывает такое, что в момент выполнения запланированного запуска программы интернет отсутствует. В итоге обновление курса в БД не происходит.

Сделать запланированное действие раз в час, и в реестре хранить какой-нибудь ключ с информацией о том был ли обновлён курс на сегодняшний день или нет. Тогда всё равно остаётся 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;
Ответить с цитированием