Доброго всем дня
Проблема в следующем:
На неком сайте есть кнопка и пара полей ввода даты. При нажатии на нее, сервер выдает таблицы в виде текста в окне браузера. Изначально на странице есть некая шапка, ниже которой потом приписываются эти таблицы.
Суть вот в чем: во втором потоке постоянно проверяеть наличие некой фразы в тексте вебстраницы, и, если кусок фразы присутствует, копировать весь текст в Memo1.
Не имею представления как сделать в 1 поток, поэтому стал делать в 2.
Если в 1 поток, по при нажатии на кнопку запроса этой таблицы, программа сперва выполнить все sleep и задержки по таймеру, а уж потом отправит запрос на сервер и получит эту таблицу.
Я делаю примерно следующее:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | procedure TForm1 . Button1Click(Sender: TObject);
var MSt, MEnd: string ;
xHWND, LoginHTML_id, PasswordHTML_id, ButtonHTML_id, HTML_id: variant;
HTMLDocument: IHTMLDocument3;
StChar: PAnsiChar ;
len: integer ;
begin
MSt := '' ;
MEnd := '' ;
If Edit1 . Text<> '' then
MSt := Edit1 . Text
else begin
showmessage( '' );
exit;
end ;
If Edit2 . Text<> '' then
MEnd := Edit2 . Text
else begin
showmessage( '' );
exit;
end ;
while WebBrowser1 . ReadyState<READYSTATE_COMPLETE do
Application . ProcessMessages;
HTMLDocument:=WebBrowser1 . Document as IHTMLDocument3;
LoginHTML_id := HTMLDocument . getElementById( '' );
LoginHTML_id . value := '' ;
PasswordHTML_id := HTMLDocument . getElementById( '' );
PasswordHTML_id . value := '' ;
sleep ( 50 );
ButtonHTML_id := HTMLDocument . getElementById( '' );
ButtonHTML_id . click;
sleep ( 50 );
HTMLDocument:=WebBrowser1 . Document as IHTMLDocument3;
HTMLDocument . getElementById( '' ).click;
HTML_id := HTMLDocument . getElementById( '' );
HTML_id . value := MSt;
HTML_id := HTMLDocument . getElementById( '' );
HTML_id . value := MEnd;
HTML_id := HTMLDocument . getElementById( '' );
HTML_id . click;
sleep ( 100 );
|
Далее, во втором потоке, пытаюсь отслеживать изменение страницы (получается не очень)
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | procedure TNewThread . Execute;
var
HTMLDocument: IHTMLDocument3;
begin
while Form1 . WebBrowser1 . ReadyState<READYSTATE_COMPLETE do
Application . ProcessMessages;
HTMLDocument:=Form1 . WebBrowser1 . Document as IHTMLDocument3;
while pos( 'некая строка' , Form1 . Memo1 . Lines . Text) = 0 do
begin
HTMLDocument:=Form1 . WebBrowser1 . Document as IHTMLDocument3;
Form1 . Memo1 . Text := HTMLDocument . documentElement . innerText;
end ;
end ;
procedure TForm1 . Button4Click(Sender: TObject);
var
NewThread: TNewThread;
begin
NewThread:=TNewThread . Create( true );
NewThread . FreeOnTerminate:= true ;
NewThread . Priority:=tpLower;
NewThread . Resume;
end ;
|
Что делаю не так? Может какие-то варианты еще есть?