Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

Как прочитать текст из TWebBrowser?   Найти похожие ветки 

 
Ш-К   (2006-10-19 20:46) [0]

Следующий код нге работает:

procedure TForm1.FormCreate(Sender: TObject);
var
 WB: TWebBrowser;
begin
 WB := TWebBrowser.Create(nil);
 try
   WB.Navigate("C:\Temp\1.htm");
   while not WB.ReadyState in [READYSTATE_COMPLETE] do
     Forms.Application.ProcessMessages;
   Caption := (WB.Document as IHTMLDocument2).body.innerText; //<-- ошибка здесь
 finally
   WB.Free;
 end;
end;


 
Ш-К   (2006-10-19 20:58) [1]

А когда делаю так, то работает:

var
 WB: TWebBrowser;

procedure TForm3.Button1Click(Sender: TObject);
begin
 Caption := (WB.Document as IHTMLDocument2).body.innerText;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
 WB := TWebBrowser.Create(nil);
 WB.Navigate("C:\Temp\1.htm");
 while not WB.ReadyState in [READYSTATE_COMPLETE] do
   Forms.Application.ProcessMessages;
end;


Почему?


 
Gero ©   (2006-10-19 21:35) [2]

Потому что body на тот момент еще не существует, не используй OnCreate, используй WebBrowser.OnDocumentComplete


 
Ш-К   (2006-10-20 11:56) [3]

Причем здесь OnCreate. WB - локальный.

procedure TForm3.Button1Click(Sender: TObject);
var
 WB: TWebBrowser;
begin
 WB := TWebBrowser.Create(nil);
 try
   WB.Navigate("C:\Temp\1.htm");
   while not WB.ReadyState in [READYSTATE_COMPLETE] do
     Forms.Application.ProcessMessages;
   Caption := (WB.Document as IHTMLDocument2).body.innerText; //<--
   //ошибка здесь body = nil
 finally
   WB.Free;
 end;
end;


Тоже не работает. Я полагаю, не дожидаемся загрузки документа. Вот это не катит:
while not WB.ReadyState in [READYSTATE_COMPLETE] do
     Forms.Application.ProcessMessages;


Где? Лыжи не едут?


 
Плохиш ©   (2006-10-20 12:07) [4]


>    while not WB.ReadyState in [READYSTATE_COMPLETE] do

while WB.ReadyState < READYSTATE_COMPLETE do ?

http://www.swissdelphicenter.ch/de/showcode.php?id=1096


 
Ш-К   (2006-10-20 12:28) [5]

Охренеть. Оказывается код
while not WB.ReadyState in [READYSTATE_COMPLETE] do
и
while not (WB.ReadyState in [READYSTATE_COMPLETE]) do
по разному работает.

Проблема не в этом, а в том, что у меня WB.ReadyState никогда не становится READYSTATE_COMPLETE. И идет бесконечный ProcessMessages.
С чем это может быть связано?


 
Плохиш ©   (2006-10-20 12:39) [6]


> Ш-К   (20.10.06 12:28) [5]
> Охренеть. Оказывается код

Вообще-то в описании языка паскаль написано, что операция NOT имеет наивысший приоритет.

> Проблема не в этом, а в том, что у меня WB.ReadyState никогда
> не становится READYSTATE_COMPLETE.

В приведённой ссылке производят сравнивание с READYSTATE_INTERACTIVE, наверное не спроста.


 
Ш-К   (2006-10-20 12:52) [7]

Странно, всегда сравнивалось так:
while WebBrowser.ReadyState <> READYSTATE_COMPLETE do
По всему инету висит этот код. Даже в TEmbeddedWB.Wait.
Что случилось, что теперь так не пишут?


 
Gero ©   (2006-10-20 13:44) [8]

> [3] Ш-К   (20.10.06 11:56)


> Я полагаю, не дожидаемся загрузки документа. Вот это не
> катит:

Ты гений. Если бы еще и читать умел, было вобще супер.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
15-1163566298
vamp_avp
2006-11-15 07:51
2006.12.03
Траблтикет


15-1163183911
Pa
2006-11-10 21:38
2006.12.03
ZipTV и русские имена в архивах, кто-нибудь разбирался?


15-1163582327
xazan
2006-11-15 12:18
2006.12.03
Определение топологии сети


2-1163524922
Beavercrazy
2006-11-14 20:22
2006.12.03
Как сохранить файл в формате html


2-1163334091
AlexanderMS
2006-11-12 15:21
2006.12.03
Прокрутить Memo и установить курсор.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский