![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Может быть кому-то пригодится.
Получение курса валют (в примере EUR) с помощью веб сервиса с сайта ЦБРФ. ++ хотелось бы обсудить код и тот факт, что память улетучивается если эту процедуру вызывать и вызывать... и вызывать. Где-то в Uses: Код:
uses ... DailyInfo, XSBuiltIns, Xml.XMLIntf, Xml.XMLDoc, Xml.xmldom, Xml.Win.msxmldom; Код:
var
XSDate: TXSDateTime;
I: Integer;
begin
with TXMLDocument.Create(nil) do
try
Active := true;
XSDate := TXSDateTime.Create;
with XSDate do
try
AsUTCDateTime := Date;
DocumentElement := GetDailyInfoSoap()
.GetCursOnDateXML(XSDate).XMLNode;
for I := 0 to DocumentElement.ChildNodes.Count - 1 do
begin
if DocumentElement.ChildNodes[i].ChildNodes.FindNode('VchCode')
.Text = 'EUR' then
Memo1.Lines.Add('EUR:' + DocumentElement.ChildNodes[i]
.ChildNodes.FindNode('Vcurs').Text);
end;
finally
Free;
end;
finally
Free;
end; |
|
#2
|
||||
|
||||
|
По-моему, вызов напрямую TXMLDocument.Create считается дурным тоном. В конце модуля XMLDoc предусмотрена куча процедур, создающих XMLDocument и возвращающих их в качестве интерфейса. Далее везде в процедуры и методы нужно передавать интерфейс.
|