Главная страница
    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.058 c
2-1163580837
Sanyok
2006-11-15 11:53
2006.12.03
По правте пожалуйста этот запрос не правильно делит


15-1163543329
Германн
2006-11-15 01:28
2006.12.03
Интернет в Москве


15-1163497281
s_t_d
2006-11-14 12:41
2006.12.03
Проблема с платой Intel D-945 PLRN


2-1163329112
redlord
2006-11-12 13:58
2006.12.03
не активный контрол


4-1153691416
Тонго
2006-07-24 01:50
2006.12.03
Win API





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский