Консультация № 63747
22.11.2006, 18:22
0.00 руб.
0 6 2
Уже задавал вопрос по поводу получения содержимого тегов в тексте документа через WebBrowser, получил ответ, но слишком поздно смог проверить...
Такой вариант

var
tagsU: variant;
i: integer;
begin
tagsU := WebBrowser1.OleObject.document.all.tags(‘u‘);
for i := 1 to tagsU.Length-1 do
ListBox1.AddItem(tagsU.item(i)..innerText,nil);

выдаёт программное исключение.
Помогите, пожалуйста, разобраться.

Обсуждение

Неизвестный
23.11.2006, 00:39
общий
это ответ
Здравствуйте, Mini Cooper!
Создаете новый проект, кидаете на форму кнопку, ListBox и броузер. Последний переименовываете в WB. Добавляете пару событий и доводите текст до того, чтобы он стал таким же, как в примере. Должно работать. У меня работает.

Скорей всего, проблема в том, что вы пытаетесь прочесть какую-то информацию, еще не загрузив ее в броузер. Используйте проверку на непустоту содержимого или блок try/except

Приложение:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw;type TForm1 = class(TForm) WB: TWebBrowser; ListBox1: TListBox; Button1: TButton; procedure WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WBDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);var tagsU: variant; i: integer;begin tagsU := WB.OleObject.document.all.tags(‘u‘); for i := 1 to tagsU.Length-1 do ListBox1.AddItem(tagsU.item(i).innerText,nil);end;procedure TForm1.Button1Click(Sender: TObject);begin WB.Navigate(‘d:\ExpandCPU.html‘);end;end.
Неизвестный
23.11.2006, 07:08
общий
это ответ
Здравствуйте, Mini Cooper!

цикл должен начинаться с 0 !!!
Неизвестный
23.11.2006, 09:59
общий
Кстати, да. Цикл действительно должен начинаться с нуля =)А еще может плохо работать, если теги неправильно вложены - в каком-дь кривом порядке. Типа:<b><i></b></i>
Неизвестный
23.11.2006, 12:39
общий
Да, цикл, конечно же, с 0.Интересно, что страница валидатором пропущена, как не содержащая ошибок, только замечания.
Неизвестный
23.11.2006, 14:01
общий
А валидатор на какую версию html?По-моему, только XHTML 1.0 strict требует строгой вложенности тегов. Нестрогая вложенность - это как я написал в предыдущем примере. Почему не всегда можно сразу напрямую обращаться к некоторым наборам тегов, мне неизвестно. Это надо MDSN лопатить.
Неизвестный
23.11.2006, 14:07
общий
Да, вполне вероятно, что проверялось не на максимальной строгости, но ляпов вроде перемешанных тегов не заметил. Хотя, может, не обратил внимания.Сейчас использую специальным образом сделанную страницу, читаю необходимые теги - всё отлично.
Форма ответа