Форум: "Основная";
Текущий архив: 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] dowhile 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