Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
ВнизТВебБраузер Найти похожие ветки
← →
dimonf (2001-12-15 14:56) [4]------------------------------------------------------------------------------
sorry задаю вопросы за которые через недельку самому стыдно.. Но влез в не совсем знакомую область.
Итак: планируется использовать Doc1:IHTMLDocument2 чисто функционально (без связи с визуальными компонентами). В тестовом приложении делаю
procedure TForm1.FormCreate(Sender: TObject);
begin
Doc1:=CoHTMLDocument.Create;
end;
и ес-но
procedure TForm1.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
Doc1._Release;
end;
C Doc1 пока никаких операций не делаю. Когда закрываю
приложение -
exception
..
Если Doc1._Release закоментировать - все Ok ;
Так вопрос - надо ли освобождать интерфейсы или приложение сделает это само (есть подозрение.. ).
И если не надоел - два маленьких вопроса на перспективу:
1. как более рационально содержимое Doc1 (планирую модифицировать в рантайме) в случае необходимости впихнуть в TWebBrowser (от IE4 через activeX) для визуализации того, что навоял;
2. что нужно помещать в начале PSafeArray^ перед юзанием IHTMLDocument2.write(psarray: PSafeArray); l - что то чтение msdn не очень то помогло ...;
Ответить на вопрос по почте.
Ответы:
--------------------------------------------------------------------------------
6/21/2000 11:56:26 PM | Дополнение или отзывы на ответы от автора вопроса
Спасибо за желание помочь. Но за єти две недели я основательно разобрался
с IHTMLDocument2 - действительно дивные вещи делать можно.
Насчет PSafeArray люди (Tolik Tentser из fido7/ru/delphi)
посоветовали так:
var
Document: IHtmlDocument2;
V: Variant;
begin
Document := WebBrowser.Document as IHtmlDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := "<HTML><HEAD><TITLE>Hello World</TITLE>" +
"</HEAD><BODY>Hello again !</BODY></HTML>";
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;
Может еще кому пригодится. Только вначале я делаю
WebBrowser.Navigate("about:blank",ov1,ov2...); - а эту идейку
подсмотрел в Королевы.
Os Ig
--------------------------------------------------------------------------------
6/21/2000 7:33:42 PM
Насчет второго вопроса:
У TWebBrowser"а есть свойство Document, оно как раз реализует
интерфейс IHTMLDocument2. Очень удобно доступаться к любым
"внутренностям" html-документа.
И перезаписывать его полностью или изменять по месту.
Насчет PSafeArray не могу сказать, еще не разбиралась. А это
академический интерес или без него Вам никак не обойтись ?
Лена Филиппова
--------------------------------------------------------------------------------
5/29/2000 6:10:08 PM
По первому вопросу.
Вы догадываетесь абсолютно правильно. Doc1._Release вызывается
автоматически. Мало того, вместо Doc1.Relese можно написать
Doc1 := nil; При этом автоматически вызовется Doc1._Release и
ошибок при закрытии формы не будет. Можно вообще ничего не писать,
тогда объект прибьется автоматически. Если же нужно точно указать,
когда интерфейс должен быть освобожден, тогда пишите Doc1 := nil;
Ссылки на интерфейсы автоматически обнуляются при разрушении
экземпляра объекта, в котором она (ссылка) объявлена или при выходе
из процедуры (если ссылка на интерфейс объявлена как переменная в
процедуре).
В принципе, при работе с интерфейсами, вызывать метод _Release не
рекомендуется, т.к. это может привести к тому, что объект,
реализующий интерфейс будет освобожден, а ссылка на него еще
останется. Это и произошло в Вашем случае.
По остальным вопросам - сори, не в курсе (не ковырял я это).
----------------------------------------------------------------------
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c