Начало » Программирование » Delphi » Ошибка с разбором IHTMLDocument2 (Нужна помощь с разбором IHTMLDocument2)
Ошибка с разбором IHTMLDocument2 [сообщение #2480] |
Tue, 06 June 2023 07:48 |
harvest
Сообщений: 6 Зарегистрирован: June 2023
|
Junior Member |
|
|
Добрый день, т.к. sql.ru больше нет, надеюсь на новом сайте получится найти ответ.
Имеется небольшой кусочек кода, который работал до того как сайт обновил протоколы. Заменена компонента IdHTTP на NetHTTPClient, однако в строке не происходит полной загрузки строки в вариантный массив, хотя раньше все работало. Из-за этого коллекция элементов DocTR:=Doc.all.tags('TR') as IHTMLElementCollection; пустая.
Код процедуры:
ACurCodeN:=682;
CDate:=01.01.2022;
RDate:=28.02.2022;
URL:='https://www.cbr.ru/hd_base/seldomc/sc_dynamic/?UniDbQuery.Posted=True&UniDbQuery.From='+DateToStr(CDate)+'&UniDbQuery.To='+DateToStr(RDate)+'&UniDbQuery.ValID='+ACurCodeN;
try
//FDataModule.IdHTTP1.HandleRedirects:=true;
//AHTML:=FDataModule.IdHTTP1.Get(URL); //не работает из-за сайта
AHTML:=FdataModule.NetHTTPClient1.Get(URL).ContentAsString;
Doc:=coHTMLDocument.Create as IHTMLDocument2;
v:=VarArrayCreate([0, 0], varVariant);
v[0]:=AHTML;
Doc.write(PSafeArray(System.TVarData(v).VArray));
DocTR:=Doc.all.tags('TR') as IHTMLElementCollection;
for i:=1 to DocTR.length-1 do
begin
TRElement:= DocTR.Item(i,0) as IHtmlElement;
DocTD:=TRElement.children as IHTMLElementCollection;
if (DocTD.length>2) then
begin
ADate:=StrToDate((DocTD.Item(0, 0) as IHtmlElement).innerText);
AValue:=StrToCurr((DocTD.Item(2, 0) as IHtmlElement).innerText);
end
end
finally
Doc:=nil;
|
|
|
Переход к форуму:
Текущее время: Sun Nov 24 04:20:44 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01885 секунд
|