Показать сообщение отдельно
  #5  
Старый 22.11.2008, 13:57
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
if WB.Document = nil then WB.Navigate('about:blank');
v := VarArrayCreate([0, 0], varVariant); Это массив из одного элемента типа Variant?
Да, это массив из одного элемента.

Цитата:
(WB.Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArra y));
as - Это что за оператор?
Оператор приведения к типу; так же как и конструкция: IHTMLDocument2(WB.Document).

Цитата:
(впрочем судя по точке мы обращаемся к WB.Document как классу IHTMLDocument2) и
IHTMLDocument2 - это не класс, а Interface (модуль MSHTML.PAS).

Цитата:
записываем в него PSafeArray - тоже непонятный оператор(или это массив?).
PSafeArray - структура (модуль ActiveX.pas). Не записываем в него ничего, а приводим вариантный массив к этому типу, т.к.
IHTMLDocument2.Write принимает параметр именно типа PSafeArray.

Цитата:
-( TVarData - тоже непонятно что но хоть аргумент ясен. -)))
И для этого непонятно чего вызываем метод VArray(не знаю такого).
VArray - не метод, а тип вариантной переменной, который объявлен в TVarData - packed record.
Дело в том, что структура PSafeArray и PVarArray одинаковы (TVarData(v).VArray - таким выражением получаем "v" типа PVarArray), поэтому берется вариантный массив (в нашем случае массив символов html страницы) и приводится к типу, который принимает процедура Write.
Цитата:
(WB.Document as IHTMLDocument2).Close; (Закрыть и закрыть, я не против, ток где мы открывали не ясно -( ).
Открытие документа здесь: WB.Navigate('about:blank');
__________________
Не забывайте делать резервные копии
Ответить с цитированием